PHP准备的语句不工作

PHP准备的语句不工作,php,mysql,mysqli,prepared-statement,Php,Mysql,Mysqli,Prepared Statement,我正在用PHP做一个准备好的语句,我的代码很好,直到我在参数中添加了“id”和“key”。他们肯定也在我要求的桌子上。怎么了?提前谢谢 错误:在布尔值上调用成员函数bind_param() if($\u POST['userx'])){ 回声“仪表板”; $queryA=“选择来自大学生的姓名、专业知识、密码、id、密钥,其中电子邮件=?”; $stmt=$connection->prepare($queryA); $stmt->bind_param('s',$u POST['userx']);

我正在用PHP做一个准备好的语句,我的代码很好,直到我在参数中添加了“id”和“key”。他们肯定也在我要求的桌子上。怎么了?提前谢谢

错误:在布尔值上调用成员函数bind_param()

if($\u POST['userx'])){
回声“仪表板”;
$queryA=“选择来自大学生的姓名、专业知识、密码、id、密钥,其中电子邮件=?”;
$stmt=$connection->prepare($queryA);
$stmt->bind_param('s',$u POST['userx']);
$stmt->bind_result($name1、$profo、$password1、$key、$id);
$stmt->execute();
$stmt->fetch();
$stmt->close();
返回
布尔值(false)

确保您的查询是正确的

你可以这样做一个简单的检查

$stmt = $connection->prepare($queryA);
if (!$stmt) {
 echo "failed to run";
} else {
$stmt->bind_param('s',$_POST['userx']);
$stmt->bind_result($name1,$profo,$password1,$key,$id);
$stmt->execute();
$stmt->fetch();
}
编辑: 如果你用的是PDO,你做错了,应该是这样的

$stmt = $conn->prepare("SELECT name,profo,password,id,key FROM 
collegestudents WHERE email = :email");
    $stmt->bindParam(':email', $email);

使用更改数据库连接文件

然后换行

$queryA = "SELECT name,profo,password,id,key FROM collegestudents WHERE email = ?";
 $stmt = $connection->prepare($queryA);
 $stmt->bind_param('s',$_POST['userx']);
 $stmt->bind_result($name1,$profo,$password1,$key,$id);
 $stmt->execute();


Key是mysql中的保留关键字

在查询中,将字段名和表名用反勾号括起来是一个好习惯,但也可以检查错误

$queryA = "SELECT `name`,`profo`,`password`,`id`,`key` FROM `collegestudents` WHERE `email` = ?";
$stmt = $connection->prepare($queryA);
if ($stmt) {
    $stmt->bind_param('s',$_POST['userx']);
    ...
}
else {
    echo "MySQL ERROR: " . $connection->error;
}

你能提供关于数据库表的详细信息吗?比如什么信息?哪个字段先到,键还是id?!(SELECT中的顺序不同于bind_结果)@user5329483这是真的,但此代码没有通过
$stmt=
行。@garethpower,表结构。您是否尝试检查
$error
属性以查看其内容?代码中需要基本调试和错误检查。将查询直接复制到mysql
中,从colle中选择名称、profo、密码、id和密钥gestudents的email=''
很有可能会失败…这不是mysqli prepare的工作方式。第一个参数是数据类型,
s
代表字符串。你在哪里看到的?问题被标记为
mysqli
。恐怕不是,这是mysqli代码。如果你想了解函数,请查看手册。没有bind_param,bind_result in PDO。你知道使用PDO比使用mysqli更好。我理解这一点,但我在问为什么查询不起作用??好的,但是对于“键”部分,我可以使用mysqli转义字符串吗?不,你不需要检查这个答案
$queryA = "SELECT name,profo,password,id,key FROM collegestudents WHERE email = ?";
 $stmt = $connection->prepare($queryA);
 $stmt->bind_param('s',$_POST['userx']);
 $stmt->bind_result($name1,$profo,$password1,$key,$id);
 $stmt->execute();
$queryA = "SELECT name,profo,password,id,key FROM collegestudents WHERE email = :v";
 $stmt = $connection->prepare($queryA);
 $stmt->execute( array('v' => $_POST['userx']) );
$queryA = "SELECT `name`,`profo`,`password`,`id`,`key` FROM `collegestudents` WHERE `email` = ?";
$stmt = $connection->prepare($queryA);
if ($stmt) {
    $stmt->bind_param('s',$_POST['userx']);
    ...
}
else {
    echo "MySQL ERROR: " . $connection->error;
}