我已将我的注册脚本从
mysql转换为
mysqli.我工作得很好,但它现在给了我错误
Commands out of sync; you can't run this command now
function register_user($register_data) { global $myConnection; array_walk($register_data,'array_sanitize'); //Make the array readable and seperate the fields from data $fields = '`' . implode('`,`',array_keys($register_data)) . '`'; $data = '\'' . implode('\',\'',$register_data) . '\''; //Insert the data and email an activation email to the user MysqLi_query($myConnection,"INSERT INTO `members` ($fields) VALUES ($data)") or die(MysqLi_error($myConnection)); email($register_data['mem_email'],'Activate your account',"Hello " . $register_data['mem_first_name'] . ",\n\nThank you for creating an account with H Fencing. Please use the link below to activate your account so we can confirm you identity:\n\nhttp://blah.blah.co.uk/activate.PHP?mem_email=" . $register_data['mem_email'] . "&email_code=" . $register_data['email_code'] . "\n\n - David & Jay "); }
If you get Commands out of sync; you can’t run this command now in your client code,you are calling client functions in the wrong order.
This can happen,for example,if you are using MysqL_use_result() and try to execute a new query before you have called MysqL_free_result(). It can also happen if you try to execute two queries that return data without calling MysqL_use_result() or MysqL_store_result() in between.
从这里:
http://dev.mysql.com/doc/refman/5.0/en/commands-out-of-sync.html
更新
如果为查询创建变量并将变量直接粘贴到MysqL Workbench之类,则可以在执行之前检查语法.
<?PHP function myConnection(){ $myConnection = MysqLi_connect('localhost','my_user','my_password','my_db'); return $myConnection; } function register_user($register_data) { array_walk($register_data,'array_sanitize'); //Make the array readable and seperate the fields from data $fields = '`' . implode('`,array_keys($register_data)) . '`'; $data = "'" . implode("','",$register_data) . "'"; //Insert the data and email an activation email to the user $query = "INSERT INTO `members` ($fields) VALUES ($data)"; $myNewConnection = myConnection(); if($result = MysqLi_query($myNewConnection,$query)){ email($register_data['mem_email'],\n\nThank you for creating an account with H Fencing. Please use the link below to activate your account so we can confirm you identity:\n\nhttp://blah.blah.co.uk/activate.PHP?mem_email=" . $register_data['mem_email'] . "&email_code=" . $register_data['email_code'] . "\n\n - David & Jay "); MysqLi_free_result($result); return ("Success"); } else { echo $query; die(MysqLi_error($myNewConnection)); } } ?>