相关疑难解决方法(0)

清理用户密码

在散列它们并将它们存储在我的数据库中之前,我应该如何逃避或清除用户提供的密码?

当PHP开发人员考虑出于安全目的而考虑哈希用户的密码时,他们往往会像对待任何其他用户提供的数据一样考虑这些密码.这个主题经常出现在与密码存储相关的PHP问题中; 开发人员经常希望使用诸如escape_string()(在各种迭代中)等功能清理密码htmlspecialchars(),addslashes()然后再对其进行散列并将其存储在数据库中.

php sql hash pdo

95
推荐指数
2
解决办法
5100
查看次数

PHP PDO不会在重复键插入时抛出异常

我有一个奇怪的问题,PDO在插入重复值时不会抛出异常.在这种情况下,我确实预计会出错.

相关代码:

try
{
  $db_conn = new PDO("mysql:host=".$config["database"]["hostname"].";charset=utf8", $config["database"]["username"], $config["database"]["password"], []);
  $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $db_conn->exec(file_get_contents("some_file_with_data.sql");
}
catch(Exception $e)
{
  // PDOException extends RuntimeException extends Exception so exceptions should be catched here
  // however for the duplicate key entry it will not throw an exception
}
Run Code Online (Sandbox Code Playgroud)

带有SQL数据的文件包含多个这样的插入:

INSERT INTO `a` (`b`, `c`) VALUES
  (1, 1),
  (2, 2),
  (3, 2);

INSERT INTO `a` (`b`, `c`) VALUES
  (1, 1);
Run Code Online (Sandbox Code Playgroud)

b表中的字段a设置为主键.当我使用phpMyAdmin在完全相同的结构中插入完全相同的数据时,我收到此错误:#1062 - Duplicate entry '65533' for key 'PRIMARY'

为什么PDO在这种情况下不会抛出错误?即使我将错误模式设置为异常?

编辑:这是用于此特定表的表结构

CREATE …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

9
推荐指数
1
解决办法
2639
查看次数

标签 统计

pdo ×2

php ×2

hash ×1

mysql ×1

sql ×1