我没有看到错误,希望有人能弄明白:
public static function createMessage($title, $message, $startDate, $endDate, $author, $status){
//$dbConn is now a mysqli instance with a connection to the database foobar
$dbConn = Database::getConnection("foobar");
$stmt = $dbConn->prepare("INSERT into messages(title, msg, date_start, date_end, app_usersID_FK, date_created, activeflag, msg_status) VALUES (?,?,?,?,?,?,?,?)");
if(!$stmt){
throw new Exception("Unable to prepare the statement");
}
$dt = date("Y-m-d");
$stmt->bind_param("ssssisii", $title, $message, $startDate, $endDate, $author, $dt, 1, $status);
$stmt->execute();
return true;
}
函数调用
MessageCenter :: createMessage(“你好”,“只是打电话来打招呼”,“2009-09-12”,“2009-09-12”,“1”,“1”);
错误消息是:
致命错误:无法通过引用传递参数8
答案 0 :(得分:6)
我猜你的bind_param
方法实际上是mysqli_stmt::bind_param
。如果是:每个参数(第一个参数除外)必须是通过引用传递的变量,因此它们可以“绑定”。
就像手册中说的(强调我的):
mysqli_stmt::bind_param
-mysqli_stmt_bind_param
- 绑定 变量作为参数准备好的语句
这意味着您无法传递值:您必须使用变量。
Si,就你的情况而言,应该这样:
$my_var = 1;
$stmt->bind_param("ssssisii", $title, $message, $startDate,
$endDate, $author, $dt, $my_var, $status);
答案 1 :(得分:0)
$dt = date("Y-m-d");
$flag = 1;
$stmt->bind_param("ssssisii", $title, $message, $startDate, $endDate, $author, $dt, $flag, $status);
$stmt->execute();