Два вопроса для старых программистов [закрыто]

ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ ВОПРОС ВНИМАТЕЛЬНО. Это не обычная глупость" мой код не работает !! ! "вопрос.

Когда я запускаю этот код с предполагаемой ошибкой

try {
  $sth = $dbh->prepare("SELECT id FROM users WHERE name INN(?,?) ");
  $sth->execute(array("I'm","d'Artagnan"));
} catch (PDOException $e) {
    echo $e->getMessage();
}

, я получаю это сообщение об ошибке

У вас есть ошибка в синтаксисе SQL ... рядом с 'INN (' I \ 'm' , 'd \' Artagnan ')' в строке 1

Но в течение многих лет я думал, что запрос и данные отправляются на сервер отдельно и никогда не мешают. Таким образом, у меня есть несколько вопросов (хотя я сомневаюсь, что кто-то получил ответ ... )

  1. Откуда у него такое знакомое строковое представление - в кавычках и экранированных? Это сделано специально для сообщения об ошибке или это часть фактического запроса?
  2. Как это работает на самом деле? Заменяет ли он заполнитель данными или нет?
  3. Есть ли способ получить весь запрос, а не только его небольшую часть, для целей отладки?

Обновление

mysqli делает это так, как ожидалось: выдает ошибку говорит рядом с 'INN (?,?) '

8
задан Your Common Sense 16 September 2010 в 14:23
поделиться