gpt4 book ai didi

MySQL 查询运行无误但不填充数据库

转载 作者:行者123 更新时间:2023-11-29 03:03:39 27 4
gpt4 key购买 nike

晚安的人们,

有另一个人“看着这个太长的时刻”。

此代码在运行时返回成功消息,但没有任何内容进入数据库表,也没有抛出任何错误,我知道所有正确的值都从 _post 收到,但我看不出有什么问题,我几乎另一个页面上的相同查询,它工作正常。

任何人都可以看到代码的问题吗?

if (isset($_POST['username']) && $_POST['username'] !== '')
{

$salted = md5($_POST['pass1'] . 'salt');

try
{
$sql = 'INSERT INTO users SET
username = :username,
firstname = :firstname,
lastname = :lastname,
email = :email,
password = $salted,
joined = CURDATE()';
$s = $PDO->prepare($sql);
$s -> bindValue(':username', $_POST['username']);
$s -> bindValue(':firstname', $_POST['firstname']);
$s -> bindValue(':lastname', $_POST['lastname']);
$s -> bindValue(':email', $_POST['email']);
$s -> execute();

}
catch (PDOException $e)
{
$error = 'Error adding submitted user.';
echo $error;
exit();
}

?> <div class="alert alert-success">User added to the database.</div> <?php

}

最佳答案

在这里总结评论,为了有答案。标记社区 Wiki。

  • INSERT 语句中的字符串应该用引号引起来。

      password = '$salted',
  • 无论如何你都应该使用一个参数。

      password = :password,

    . . .

    $s -> bindValue(':password', $salted);
  • MD5 不是现代强密码存储的首选哈希函数。 SHA1 也不是。
    尝试改用 SHA256 或 Bcrypt。

    $salted = hash('sha256', $_POST['pass1'] . 'salt');
  • 如果您为每个用户使用随机盐串,则盐腌会更好。

  • 确保您的 PDO 实例是 configured to throw exceptions .

    $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  • 始终捕获 PDO 异常的错误消息,即使您不将其输出给用户也是如此。

    error_log($e->getMessage());

关于MySQL 查询运行无误但不填充数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19212186/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com