标题类型说明了一切,我通过函数insertannounce支付了3个变量,并且数据库抛出了一个错误:致命错误:无法通过引用传递参数4.
fyi:id不是自动增量,日期是字符串。
请求信息:php
for ($j = 0; $j < count($server_id); $j++){
$found = 0;
if (isset($local_id[0])){
for ($i = 0; $i < count($local_id); $i++) {
if ($server_id[$j] == $local_id[$i]){
$found = 1;
}
}
if ($found == 0)
insertAnnounce($server_id[$j], $server_message[$j], $server_date[$j]);
}
else //if both fields are empty
insertAnnounce($server_id[$j], $server_message[$j], $server_date[$j]);
}
功能:
function insertAnnounce ($id, $message, $date){
// $insert = $mysqli->query("INSERT announce (id, message, active, datestamp) VALUES ('{$id}', '{$message}', 'enabled', '{$date}')");
if ($stmt = $mysqli->prepare("INSERT INTO announce (id, message, active, datestamp) VALUES (?, ?, ?, ?)"))
{
$stmt->bind_param("isss", $id, $message, 'enabled', $date);
$stmt->execute();
$stmt->close();
}
}
任何想法?,谢谢!
答案 0 :(得分:2)
如果查看bind_param()
上的手册,您会看到所有参数都通过引用传递,例如&$var1
等。
您的字符串已修复且无法通过引用传递,因此您需要执行以下操作:
...
$var3 = 'enabled';
$stmt->bind_param("isss", $id, $message, $var3, $date);
...
答案 1 :(得分:0)
似乎您的$date
变量是一个对象,并且解析函数无法解析引用,因为无法将对象保存到数据库中。使用$date->toString()
或$date->toUnixTimestamp()
方法。 (取决于$date
是什么)