PHP 准备好的语句不起作用

PHP prepared statement not working

我正在 PHP 中做一个准备好的语句,我的代码没有问题,直到我将 'id' 和 'key' 添加到我的参数中。他们肯定也在我要求的 table 中。怎么了?提前致谢!

ERROR: Call to a member function bind_param() on boolean

    if($_POST['userx']){
 echo '<div id="div2"><div id="font2">Dashboard</div>';
$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();
   $stmt->fetch();
    $stmt->close();
$stmt = $connection->prepare($queryA);

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

更改您的数据库连接文件

<?php $con = new PDO('mysql:host=127.0.0.1;dbname=yourdatabasename;','username',''); ?>

然后更改下面的行

$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']) );

Key 是 mysql 中的保留关键字。

在查询中用反引号括起字段名称和 table 名称是一个好习惯,同时也可以检查错误。

$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;
}