mysqli_stmt期望查询

时间:2014-01-15 01:50:45

标签: php sql mysqli

我遇到以下代码的问题

function doesNotExist($field, $userInput){

    $conn = mysqli_connect("localhost","adminP",base64_decode("MTEyODMx"), "Peter");
    $sql = "SELECT". $field ." FROM `accounts` WHERE". $field ." = (?)";

    $stmt = mysqli_prepare($conn, $sql);
    mysqli_stmt_bind_param($stmt, 's', $userInput);
    Print("Test");
    mysqli_Stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
    $row_cnt = mysqli_num_rows($result);
    mysqli_stmt_close($stmt);
    mysqli_close($conn);
    if($row_cnt == 0){
        return true;
    }
    else{
        Print ("Invalid " . $field);
        return false;
    }
} 

它给了我错误

  

警告:mysqli_stmt_bind_param()期望参数1为   mysqli_stmt,第61行的C:\ wamp \ www \ signup.php中给出的布尔值

     

警告:mysqli_stmt_execute()期望参数1为mysqli_stmt,   第63行的C:\ wamp \ www \ signup.php中给出的布尔值

     

警告:mysqli_stmt_get_result()需要参数1   mysqli_stmt,第64行的C:\ wamp \ www \ signup.php中给出的布尔值

     

警告:mysqli_num_rows()期望参数1为mysqli_result,   第65行的C:\ wamp \ www \ signup.php中给出的null

     

警告:mysqli_stmt_close()期望参数1为mysqli_stmt,   第66行的C:\ wamp \ www \ signup.php中给出的布尔值

我正在用

创建一个stmt
  

$ stmt = mysqli_prepare($ conn,$ sql);

但不知道为什么它没有认出来

1 个答案:

答案 0 :(得分:3)

manual很有帮助:

  

mysqli_prepare()返回一个语句对象,如果发生错误,则返回FALSE。

使用mysqli_error($conn)获取错误原因。我的猜测是因为你在SELECT和WHERE之后没有空格,所以你得到的是SQL语法错误,除非$ field绝对以空格开头。并开始在代码中使用错误处理!