Запрос подготовленного оператора PHP PDO не заменяет - PullRequest
1 голос
/ 06 декабря 2011

У меня есть короткий сегмент кода PHP:

$stm = $db->prepare($sql);
$result = $stm->execute($params);

$ params - это следующее

array(1) {
  [0]=>
  string(3) "why"
}

Однако $ sql, отправляемый в MySQL, все еще содержит знак вопроса в соответствии св журналы MySQL:

1 Query SELECT a.* FROM article a
LEFT JOIN article_links al on a.id = al.from_article_id
WHERE al.to_article = '?'

Есть ли что-то еще, что мне не хватает для замены?

Ответы [ 2 ]

6 голосов
/ 06 декабря 2011

Вам не нужно ставить одинарные кавычки вокруг знака вопроса:

SELECT a.* FROM article a
LEFT JOIN article_links al on a.id = al.from_article_id
WHERE al.to_article = ?;
2 голосов
/ 06 декабря 2011

Я подозреваю, что это правда:

$sql = "SELECT a.* FROM article a LEFT JOIN article_links al on a.id = al.from_article_id WHERE al.to_article = '?'"

Знак вопроса не должен быть заключен в кавычки - это означает, что это строка вместо заполнителя параметра. Используйте только al.to_article = ?.

...