prepared-statement传递引用错误

Sco*_*ott 2 php prepared-statement

我没有看到错误,希望有人能弄清楚:

 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;
 }
Run Code Online (Sandbox Code Playgroud)

函数调用

MessageCenter :: createMessage("你好","只是打电话来打招呼","2009-09-12","2009-09-12","1","1");

错误消息是:

致命错误:无法通过引用传递参数8

Pas*_*TIN 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);
Run Code Online (Sandbox Code Playgroud)