当你不能在bindparam中使用变量名时,如何绑定Params?

时间:2014-08-27 03:37:56

标签: pdo

我无法使此PDO语句生效。我在第一行使用第一个bindParam不断收到意外变量警告。我想问题可能是你不能使用:Writing.ID是绑定参数名称?但这是我需要在sql中调用以获取该变量的变量名,那么如何编写param以使其无错误,并告诉代码该param名称是否为该sql列?

$results = "SELECT
wp_users.ID,
wp_users.display_name,
stories.SID,
writing.ID,
writing.text,
writing.approved,
writing.position
FROM writing
LEFT JOIN stories on writing.SID = stories.SID
LEFT JOIN wp_users ON writing.ID = wp_users.ID
WHERE (stories.SID = :SID) AND (writing.approved = :approved) ORDER BY position ASC";

$stmt = $dbh->prepare($results)
$stmt->bindParam(':wp_users.ID', $ID, PDO::PARAM_INT);
$stmt->bindParam(':wp_users.display_name', $display_name, PDO::PARAM_STR);
$stmt->bindParam(':SID', $the_SID, PDO::PARAM_INT);
$stmt->bindParam(':writing.ID', $ID, PDO::PARAM_INT);
$stmt->bindParam(':writing.text', $text, PDO::PARAM_STR);
$stmt->bindParam(':approved', $ID, PDO::PARAM_INT);
$stmt->bindParam(':writing.position', $position, PDO::PARAM_INT);
$stmt->execute();

1 个答案:

答案 0 :(得分:0)

我认为这是一个语法错误,点符号 $ writing.ID $ writing.text 在PHP中不存在。 听起来你想要写一些文字[' text']或$ writing->文字。

...
$stmt->bindParam(':writing.text', **$writing.text**, PDO::PARAM_STR);

上面标记的语法是无效的PHP语法!

EDITED:

嗯......好像你没有在你的SQL字符串中提供一个wp_users.ID参数:表格的wp_users.ID(以冒号(:)为前缀)。 要么 您必须仅绑定在SQL

中显式设置的参数