PHP PDO, использующий драйвер MySQL, не работает - МОЙ код? - PullRequest
1 голос
/ 18 октября 2010

Хорошо, я пытаюсь преобразовать запрос MySQL в PDO MySQL. Я уже делал это раньше, но я не могу заставить это работать:

    $query  = 'SELECT key FROM turl WHERE key = "'.$k.'"';
    $req = $db->query($query);

   if($req->rowCount() > 0) {
        $key = $row['key'];
    }

А вот расширения PDO php:

extension=php_pdo.dll
;extension=php_pdo_dblib.dll
;extension=php_pdo_firebird_firebird.dll
;extension=php_pdo_firebird_interbase.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql_mysqlnd.dll
extension=php_pdo_mysql_libmysql.dll
extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pdo_sqlite_external.dll

Я публикую здесь перед ServerFault, если мой PHP-код неверен.

Кстати, здесь ошибка:

Неустранимая ошибка: вызов функции-члена rowCount () для необъекта в D: \ Entreprises \ Web сайта - Dev \ xampp \ htdocs \ ushot \ index.php в строке 51

Ответы [ 2 ]

5 голосов
/ 18 октября 2010

Согласно списку в http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html - KEY является зарезервированным ключевым словом mysql.

Так что вам нужно заключить его в кавычки, чтобы получить действительный запрос mysql

$query  = 'SELECT `key` FROM turl WHERE `key` = "'.$k.'"';

Далее. Поскольку вы используете PDO, заполнители являются более предпочтительным способом вставки динамических значений в ваши запросы:

$stmt = $db->prepare('SELECT `key` FROM turl WHERE `key` = :key');
$stmt->execute(array(':key' => 42));
$result = $stmt->fetchAll();
var_dump($result);
0 голосов
/ 16 февраля 2011

Я искал ответ на другую проблему и только заметил ваш список расширений PDO;Мне пришлось закомментировать extension = php_pdo_mysql_libmysql.dll и удалить комментарий из; extension = php_pdo_mysql_mysqlnd.dll, чтобы исправить возникшую проблему.

Затем я нашел это утверждение на Php.net, которое, похоже, поддерживает мои действия:

mysqlnd - это новая базовая библиотека, поставляемая с PHP.Это специфичная для PHP замена libmysql.mysqlnd будет использоваться для создания расширений mysql, mysqli и PDO_MySQL, если libmysql не найден в системе.Он также может использоваться вместо libmysql, даже если libmysql присутствует.mysqlnd рекомендуется для всех установок PHP из соображений производительности.

вот ссылка на этот оператор: http://us.php.net/manual/en/migration53.new-extensions.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...