从所有方面测试语句,但未能找到解决方案。
// 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()
我做了以下测试:
那么错误在哪里?
答案 0 :(得分:3)
我明白了。
<强>解决方案:强>
由于先前的准备声明$stmt_aff
连接未关闭,因此无法正常工作。
一旦我关闭它。下一步准备声明$insert_stmt
开始工作。
如果在同一页面上有多个准备语句,为什么会产生bind_param
布尔错误,这是一个很好的教训。
$stmt_aff->close();