我困在mysqli准备..我几乎所有,但确定没有在准备的声明中的错误。但即时通讯“调用非成员对象错误”..从我记得这个错误只发生如果事实上有一个错误的声明..“调用一个非对象的成员函数bind_param()”。我不是太肯定,如果我用任何的保留字..也许有人可以帮助..MYSQLi编写插入不工作..
$stmt = $mysqli->prepare("INSERT INTO customers (cid, company, fname, sname, email, mobile, email_notif, sms_notif, telephone, address, postcode, city, town, allowedLogin, date, addedby)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
$stmt->bind_param("ssssssssssssssss", $id, $company, $fname, $sname, $email, $mobile, $emailnotif, $smsnotif, $telephone, $address, $postcode, $city, $town, $allowedLogin, $date, $addedby);
if($stmt->execute())
{
/* Free Result Set */
$stmt->close();
return true;
}
else
{
return "<p>".$mysqli->error."</p>";
}
PS我通过一个函数调用传递变量:
addCustomer($company,$fname,$sname,$email,$mobile,$smsnotif,$emailnotif,$telephone,$address,$postcode,$city,$town,$allowedLogin, $date, $addedby);
这是因为它没有准备。绑定后使用'$ stmt-> error'来准备它,找出它为什么会导致该错误。此外,[根据文档](http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html),“日期”是一个保留字,但不需要勾出,不过,我会尝试将其作为故障排除的第一步。另外,根据数据库结构,如果'cid'是'auto_increment',那么也可能会导致错误,所以如果是这样,请尝试省略它。 – Jon 2013-03-09 00:27:41
提示:为了处理huuuuuge数据集,请尝试PDO。将数组传递给此(并且在需要时使用命名参数)是一个巨大的好处。 – Amelia 2013-03-09 00:28:22
每次通话后检查错误。之前的一个电话会失败,并且错误信息会有帮助。 – Barmar 2013-03-09 00:30:49