插入时mysqli代码中的致命错误

时间:2012-08-24 20:12:34

标签: php mysqli

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

为什么会出现此错误,如何修复错误?

以下是代码:

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();

1 个答案:

答案 0 :(得分:2)

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

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

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