PHP mysqli prepare语句bind_param布尔错误

时间:2017-08-31 04:56:08

标签: php mysqli

从所有方面测试语句,但未能找到解决方案。

// 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
  • 数据连接= ok(因为它在同一页面上运行其他准备语句而没有错误)

那么错误在哪里?

1 个答案:

答案 0 :(得分:3)

我明白了。

<强>解决方案: 由于先前的准备声明$stmt_aff连接未关闭,因此无法正常工作。 一旦我关闭它。下一步准备声明$insert_stmt开始工作。

如果在同一页面上有多个准备语句,为什么会产生bind_param布尔错误,这是一个很好的教训。

$stmt_aff->close();