【发布时间】:2016-03-22 00:51:11
【问题描述】:
下面的查询只包含一个变量 ($MyURL) 时有效。但是当我添加 $MySection 时,我开始收到以下错误消息:
PDOStatement::bindParam() 期望参数 3 很长,字符串在...
我知道如何在获取数组的查询中添加多个值,但是这种查询让我感到困惑。我做错了什么?
$sql= "SELECT COUNT(URL) AS num FROM pox_topics
WHERE URL = :MyURL AND Site = 'PX' AND Section = ':MySection' AND Live != 0";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':MyURL',$MyURL,':MySection',$MySection,PDO::PARAM_STR);
$stmt->execute();
$Total = $stmt->fetch();
编辑:
我已经尝试使用 PDO::PARAM_STR 在 $MyURL、$MySection 和它们两个之后进行以下查询...
$sql= "SELECT COUNT(URL) AS num FROM pox_topics
WHERE URL = :MyURL AND Site = 'PX' AND Section = :MySection AND Live != 0";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':MyURL',$MyURL,PDO::PARAM_STR);
$stmt->bindParam(':MySection',$MySection);
$stmt->execute();
$Total = $stmt->fetch();
但我收到此错误消息:“参数编号无效:绑定变量的数量与标记的数量不匹配”
【问题讨论】:
-
如果这是您的实际代码,
pox_topics之后没有空格,MySQL 被读取为FROM pox_topicsWHERE而不是FROM pox_topics WHERE -
我查了原文,pox_topics和WHERE之间有一个空格。
-
RTM on it php.net/manual/en/pdostatement.bindparam.php你做错了,
':MySection'周围不应该有引号 -
这令人困惑;当我删除引号时,我会立即收到错误消息。如果没有 $MyURL 和 $MySection 周围的引号,它将无法工作。
-
这不是我说的,我说删除in =>
AND Section = ':MySection'