首页 > 解决方案 > 2 个相同的 SQL 查询 ...一个有效,一个得到错误消息“调用成员函数 prepare() on null”

问题描述

我从事一个更大的数据库项目。现在我变得好奇,因为有相同的 SQL 查询,其中第一个获取错误,第二个相同,工作正常。我不知道。与此同时,我怀疑自己的想法。

这是简短的脚本部分:

$sql    = "SELECT * FROM `wt_name` WHERE `n_surname` LIKE 'A%' AND `n_file` = '4' AND `n_type` = 'NAME' GROUP BY `n_id` ORDER BY `n_surname`, `n_givn` ";

$statement      = $pdo->prepare($sql);
$erg            = $statement->execute();
$result         = $statement->fetchAll(PDO::FETCH_ASSOC);
$anzreihen      = $statement->rowCount();

$sqlANZ = "SELECT * FROM `wt_name` WHERE `n_surname` LIKE 'A%' AND `n_file` = '4' AND `n_type` = 'NAME' GROUP BY `n_id` ORDER BY `n_surname`, `n_givn` ";

$statementANZ   = $pdo->prepare($sqlANZ);
$erg2           = $statementANZ->execute();
$ergANZ         = $statementANZ->fetchAll(PDO::FETCH_ASSOC);
$anzahlGesamt   = $statementANZ->rowCount();

如果我不是盲人,$sql 和 $sqlANZ 应该是同一个查询。$sqlANZ 工作正常,$erganz 得到了它应该得到的数据集。但是 $sql 将不起作用并给出错误消息:

在 null 上调用成员函数 prepare()

与此同时,我不知道该怎么办了。有没有人可以检查脚本并帮助我,找到错误,我似乎看不到/找到?

(仅供参考:如果至少在实际版本中有效,第一个查询将由 LIMIT 添加)

谢谢巴吉拉

标签: phpmysqlpdoprepared-statement

解决方案


这行得通吗?

$sql    = "
SELECT * 
  FROM `wt_name`
 WHERE  `n_surname`
  LIKE 'A%' 
   AND `n_file` = '4'
   AND `n_type` = 'NAME' 
 GROUP 
    BY `n_id`
 ORDER 
    BY `n_surname`
     , `n_givn`
";

然后 pdo 想要 "`" 和 '4' 而不是 4


推荐阅读