从全面测试语句,但没有找到解决方案。
// Insert the new user into the database
if( $insert_stmt = $mysqli->prepare("INSERT INTO client (username, email,
password, reg_ip, salt, country, ref_id, pin, ref_by, ref_by_2) VALUES ( ?,
?, ?, ?, ?, ?, ?, ?, ?, ?)")){
$insert_stmt->bind_param("ssssssssii", $username, $email, $pass_2,
$reg_ip, $random_salt, $countryname, $ref_code, $hashed_pin, $user_id3,
$user_id4);
$insert_stmt->execute();
这永远不会执行或进入if语句。
我通过删除if
零件来调试它,这表明bind_param()
是布尔值错误。
$insert_stmt = $mysqli->prepare("INSERT INTO client (username, email,
password, reg_ip, salt, country, ref_id, pin, ref_by, ref_by_2) VALUES ( ?,
?, ?, ?, ?, ?, ?, ?, ?, ?)");
$insert_stmt->bind_param("ssssssssii", $username, $email, $pass_2, $reg_ip,
$random_salt, $countryname, $ref_code, $hashed_pin, $user_id3, $user_id4);
if($insert_stmt->execute()){
致命错误:打电话给布尔值
上的成员函数bind_param()
我已经完成了测试:
- 所有10个变量数据类型test = ok(使用getType()函数)
- 变量数据值= ok(打印所有数据值以进行检查)
- mySQL查询语句= ok(直接在MySQL上直接测试使用输入的数据,MySQL正在插入值) )
- 也没有语法错误。
- 变量对齐是= ok
- 数据连接是=确定(因为它运行其他准备语句而没有错误在同一页面上)
那错误在哪里?
我弄清楚了。
解决方案:由于先前的准备语句$stmt_aff
连接未关闭,因此无法正常工作。一旦我关闭了它。下一个准备语句$insert_stmt
开始工作。
一个很好的教训学会了为什么bind_param
布尔值错误如果在同一页面上有多个准备语句。
$stmt_aff->close();