我尝试通过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;
?>
答案 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);