Оператор pdo select не возвращает строк - PullRequest
4 голосов
/ 02 октября 2010

Я делаю простой выбор из MySQL, используя PHP.Я делаю что-то не так, что не могу отследить.

Вот мое утверждение:

$storyTitle = $_GET['title'];
$storyDate = urldecode($_GET['date']);
$SQL = "SELECT
        *
    FROM
        tblContent
    WHERE
        REPLACE(contentTitle,' ' , '-') = :storyTitle
    AND
        date(publishDate) = date(:storyDate)";
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$q = $conn->prepare($SQL);
$q->execute(array(':storyTitle' => $storyTitle, ':storyDate' => $storyDate));
            while($r = $q->fetch()){
                 echo $SQL;
            };

Это не выдает ошибок и не дает строк.

ЕслиЯ заменяю идентификаторы: storyTitle и: storyDate жестко закодированным оператором SQL, я получаю правильные результаты.Я прошелся и посмотрел на переменные, и они кажутся правильными ... Я уже потратил столько времени на охоту, но мне не хватает опыта, чтобы понять, что я делаю неправильно.

Ответы [ 2 ]

3 голосов
/ 02 октября 2010

Дамп содержимого ваших переменных. Я с подозрением отношусь к:

$storyDate = urldecode($_GET['date']);

$_GET параметры автоматически декодируются по URL.

0 голосов
/ 02 октября 2010

Вы должны попросить PDO явным образом выдать ошибку

try {
  $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
  $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

  $q = $conn->prepare($SQL);
  $q->execute(array(':storyTitle' => $storyTitle, ':storyDate' => $storyDate));
} catch (PDOException $e) {
  echo  $e->getMessage();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...