1

我在下面有一段代码,它使用 mysqli 和 php 将数据插入数据库。问题是我收到一个致命错误,说明:致命错误:无法通过第 116 行的 ... 中的引用传递参数 2

为什么会出现此错误,我该如何解决该错误?

下面是代码:

if ($numrows == 0){

   $teacherpassword = md5(md5("j3Jf92".$teacherpassword."D203djS"));  
   $code = md5(rand());

    $insertsql = "
    INSERT INTO Teacher
        (TeacherId, TeacherForename, TeacherSurname, TeacherEmail, TeacherAlias, TeacherUsername, TeacherPassword, Active, Code)
      VALUES
        (?, ?, ?, ?, ?, ?, ?, ?, ?)
    ";
    if (!$insert = $mysqli->prepare($insertsql)) {
      // Handle errors with prepare operation here
    }                                           

    $insert->bind_param("sssssssss", '', $getfirstname, $getsurname,
                 $getemail, $getid, $getuser,
                 $teacherpassword, '0', $code);

    $insert->execute();

    if ($insert->errno) {
      // Handle query error here
    }

    $insert->close();
4

1 回答 1

2

mysqli_stmt::bind_param()接受一个详细说明以下参数类型的字符串,然后是一组对包含数据的变量的引用。

只有变量可以通过引用传递,因此您不能将字符串 ('''0') 传递给函数。您必须将该字符串放入变量中,然后传递该变量。

如果您将常量值传递给INSERT,为什么不将它们设为DEFAULT这些字段的值,然后将它们从查询中删除?

于 2012-08-24T20:15:59.927 回答