【发布时间】:2013-11-26 14:33:54
【问题描述】:
在这件事上我疯了。以下是目前的情况和我尝试过的方法:
我有一个简单的表单,它收集电子邮件和密码,然后应该将它们插入到具有三列的数据库表中。该表称为users,三列称为userID、userEmail、userPassword。这是我的起始代码:
// hash the password value
$pass = hash_hmac('sha256', $p, 'c#hArl891', true);
// Query the database:
$q = "INSERT INTO users (userEmail, userPassword) VALUES ('".$e."','".$pass."')";
$r = mysqli_query ($dbc, $q);
if (mysqli_num_rows($r) == 1) { // Successful insertion.
此代码发生的情况是电子邮件(变量$e)在数据库中正确显示,密码是乱码(附带问题),但mysqli_num_rows($r) 返回此错误:
mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given
我试过用 $p 替换散列值,我试过用常量替换这两个变量,我试过在表名和字段名周围使用反引号,我试过一个建议我网上找的用大括号:
$q = "INSERT INTO users (`userEmail`,`userPassword`) VALUES ('{$e}','{$pass}')";
似乎无法获得mysqli_num_rows($r) == 1。
根据返回的错误消息,我看到以下变量值:
[e] => webmaster@brukenet.com
[p] => 12345
[pass] => Ç o’,YÊ2ý€|y:fز"?ïÑ`{a]YÑ=Âk¼
[q] => INSERT INTO `users` (`userEmail`, `userPassword`) VALUES ('webmaster@brukenet.com', 'Ç o’,YÊ2ý€|y:fز"?ïÑ`{a]YÑ=Âk¼')
[r] => 1
和
[dbc] => mysqli Object
这些似乎表明$r 确实等于1,但这直接取自同一错误消息。
我彻夜未眠,我想这一定是很明显的事情,我只是在俯瞰,但我就是看不到。
【问题讨论】: