编辑:我认为错误在代码的不同部分。显然,在phpmyadmin中测试预准备语句时,phpmyadmin只是对参数执行搜索替换,而不是在PDO中实际使用预准备语句。
我正在使用的PHP登录脚本使用mysqli来访问数据库。
脚本的一个关键部分是查询users
表以返回密码哈希值。
$stmt = $mysqli->prepare("SELECT password FROM users WHERE username = ?");
$stmt->bind_param("s", $_POST["username"]);
$stmt->execute();
$stmt->bind_result($hash);
我在表中有一行itcha2
作为用户名,但当我将itcha2
作为用户名传递给脚本时,它不返回任何行。
当我将查询输入phpmyadmin SELECT * FROM users WHERE username = :user
,将itcha2
绑定为:user
时,phpmyadmin会返回错误#1054 - Unknown column 'itcha2' in 'where clause'
据我了解,来自预准备语句的参数绝不应被解释为列名。
发生了什么事?
我们非常感谢任何帮助。