绑定变量的数量与php和android中预准备语句中的字段数不匹配

时间:2018-11-20 15:27:17

标签: php mysql sql mysqli

我尝试通过Android运行此脚本,但是响应是这样;

  

绑定变量数与准备好的字段数不匹配   声明

我不知道这是什么意思,但是如果他们的输入信息正确,我的脚本只是应该用来将该人登录。然后,从数据库中获取一个字符串,然后将其返回给android。有人可以解释我做错了什么吗?这个错误甚至意味着什么?

我的脚本看起来像这样;

<?php
    $db_host = 'localhost:3306';
    $db_user = 'root';
    $db_pass = '';
    $db_name = 'test';

    $con = mysqli_connect($db_host,'user',$db_pass,$db_name);
    $username = $_POST["username"];
    $password = $_POST["password"];
    $statement = mysqli_prepare($con, "SELECT * FROM cresidentials WHERE username = ? AND password = ?");
    mysqli_stmt_bind_param($statement,"ss",$usermame,$password);
    mysqli_stmt_execute($statement);

    mysqli_stmt_store_result($statement);
    mysqli_stmt_bind_result($statement,$username,$password,$isAdmin);
    echo $isAdmin;
    ?>

2 个答案:

答案 0 :(得分:0)

您的表有四列,但是您只绑定了三列。更改此:

mysqli_stmt_bind_result($statement,$username,$password,$isAdmin);

对此:

mysqli_stmt_bind_result($statement,$id,$username,$password,$isAdmin);

或从中更改选择:

SELECT * FROM ...

对此:

SELECT username, password, isAdmin FROM ...

答案 1 :(得分:0)

OP的表格中当然还有一个id列(我在他通过聊天与我分享屏幕截图后才发现的),您还需要绑定它。

mysqli_stmt_bind_result($statement, $user_id, $username, $password, $isAdmin);

代替:

mysqli_stmt_bind_result($statement,$username,$password,$isAdmin);