使用MySQL驱动程序的PHP PDO不起作用 - 可能是我的代码吗?

Jer*_*ire 1 php mysql pdo

好吧,我正在尝试将MySQL请求转换为PDO MySQL.我之前已经这样做但是我没有让这个工作:

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

   if($req->rowCount() > 0) {
        $key = $row['key'];
    }
Run Code Online (Sandbox Code Playgroud)

这里是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
Run Code Online (Sandbox Code Playgroud)

我在ServerFault之前发布这里,以防我的PHP代码错误.

顺便说一句,这是错误:

致命错误:在第51行的D:\ Entreprises\Site web - Dev\xampp\htdocs\ushot\index.php中的非对象上调用成员函数rowCount()

zer*_*kms 5

根据名单在http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html - KEY是一个保留MySQL的关键字.

所以你需要用反引号来引用它以获得有效的mysql查询

$query  = 'SELECT `key` FROM turl WHERE `key` = "'.$k.'"';
Run Code Online (Sandbox Code Playgroud)

下一页:由于您正在使用PDO - 占位符是在查询中插入动态值的更首选方式:

$stmt = $db->prepare('SELECT `key` FROM turl WHERE `key` = :key');
$stmt->execute(array(':key' => 42));
$result = $stmt->fetchAll();
var_dump($result);
Run Code Online (Sandbox Code Playgroud)