2010-10-18 4 views
1

Okay J'essaie de convertir la requête MySQL en PDO MySQL. Je fais déjà avant, mais je cn't obtenir celui-ci travail:PHP PDO utilisant le pilote MySQL ne fonctionne pas - MAy être mon code?

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

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

Et voici AOP php: extentions

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 

Je posterai ici avant ServerFault au cas où il mon code PHP qui est erroné .

Par ailleurs, voici l'erreur:

Erreur fatale: Appel à une fonction membre rowCount() sur un non-objet dans D: \ Entreprises \ Site web - Dev \ xampp \ htdocs \ UShot \ index.php à la ligne 51

+1

Cela signifie probablement qu'il ya une erreur SQL se produit, alors le résultat que vous obtenez est «FAUX» ou autre. Essayez d'activer le rapport d'erreurs de PDO. – Amber

+1

KEY n'est-il pas un mot-clé mysql réservé? – zerkms

Répondre

5

Selon la liste à http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html - KEY est un mot-clé mysql réservé.

Vous avez donc besoin de citer avec guillemets obliques pour obtenir requête valide mysql

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

suivant: Depuis que vous utilisez AOP - placeholders est bien plus préféré d'insérer des valeurs dynamiques dans vos requêtes:

$stmt = $db->prepare('SELECT `key` FROM turl WHERE `key` = :key'); 
$stmt->execute(array(':key' => 42)); 
$result = $stmt->fetchAll(); 
var_dump($result); 
+0

Wow je vous remercie beaucoup de zerkms! :) J'apprécie beaucoup! 5/5;) –

0

Je cherchais une réponse à un problème différent et je viens de remarquer votre liste d'extensions PDO; Je devais commenter extension = php_pdo_mysql_libmysql.dll et supprimer le commentaire de; extension = php_pdo_mysql_mysqlnd.dll pour résoudre un problème que j'avais.

Je trouve cette déclaration sur Php.net qui semble soutenir mon action:

mysqlnd is a new core library shipped with PHP. It is a PHP-specific replacement for libmysql. mysqlnd will be used to build the mysql, mysqli and PDO_MySQL extensions if libmysql isnt found on the system. It may also be used instead of libmysql even when libmysql is present. mysqlnd is recommended for all PHP installations for performance reasons.

ici est le lien vers cette déclaration: http://us.php.net/manual/en/migration53.new-extensions.php