【问题标题】:PHP PDO statement will NOT submit information to database [closed]PHP PDO 语句不会将信息提交到数据库 [关闭]
【发布时间】:2018-05-18 11:03:38
【问题描述】:

我实际上已经为此工作了好几个小时。而且我完全知道为什么它不会将我的信息发送到我的数据库......我之前使用过相同的策略并且效果很好。现在无论如何它都不会插入。请帮忙!

if ($validForm) {

    try {
        $stmt = $conn->prepare('INSERT INTO credentials (firstname, lastname, username, password) VALUES (:fname, :lname, :username, :password)');
        $stmt->bindValue(':fname',$firstname);
        $stmt->bindValue(':lname',$lastname);
        $stmt->bindValue(':username',$username);
        $stmt->bindValue(':password',$password);
        $passwordHash = password_hash($password, PASSWORD_BCRYPT, array("cost" => 12));
        $stmt->bindValue(':password',$passwordHash);
        $stmt->execute();
    } catch(PDOException $e) {
        echo $e->getMessage();
    }
?>

<p class="success-message">Thank You. Your Form Has Been Submitted.</p>

<?php
}

【问题讨论】:

  • $stmt->bindValue(':password',$password); -- 你已经用过2次了。
  • 请显示数据库结构和错误
  • 在代码顶部写上 ini_set('display_errors',1)
  • “仍然不工作”在你做了什么之后?
  • user_id 没有自动增量:(。可能是你发送空值但数据库字段参数不为空。你应该检查错误,否则很难解决问题跨度>

标签: php sql pdo insert


【解决方案1】:

您的密码列设置为什么数据类型、排序规则和长度?

在您的屏幕截图中,所有密码都是短文本字符串,但如果我将您的哈希码应用于第一个密码,结果是:

$2y$12$S7tIbSxqNNhn/Z7AyA8ewuq09IE/psFyVL5udLUNgmP4Q7vTd/qFO

你的桌子会接受吗?

【讨论】:

  • 这将是一个很好的评论,但并不是一个真正的答案(好吧,无论如何)
  • 伙计们,我成功了!我很好奇密码散列是如何工作的......就像它将它注册到数据库中但是当你实际尝试使用登录页面登录时它是如何工作的?就像它如何读取实际密码一样?我对 PHP 很陌生哈哈...
【解决方案2】:

我认为您应该选择以下之一:

$stmt->bindValue(':password',$passwordHash);

或者

$stmt->bindValue(':password',$password); 

【讨论】:

    猜你喜欢
    • 2015-10-17
    • 1970-01-01
    • 2020-09-09
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2013-04-09
    相关资源
    最近更新 更多