MySQLi insert into语句插入数据但也显示错误

时间:2013-11-26 14:33:54

标签: php insert mysqli

在这个问题上出去了。这是我迄今为止的情况和尝试:

我有一个收集电子邮件和密码的简单表单,然后将其插入到具有三列的数据库表中。该表名为users,三列名为userIDuserEmailuserPassword。这是我的开始代码:

// 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)返回了此错误:< / p>

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,但这是直接从同一错误消息中获取的。

我一整夜都在睡觉,我觉得这一定是显而易见的,我只是看得太过但我却看不到它。

1 个答案:

答案 0 :(得分:0)

插入查询不会返回结果集,您只能在结果集上使用mysqli_num_rows()

尝试

if (mysqli_affected_rows($dbc) > 0) {

至于您的哈希问题,您确定要存储原始二进制输出吗?将true函数中的false更改为hash_hmac(),或对原始二进制数据使用bin2hex()以获取可读数据。