drix47193 2010-10-18 01:41
浏览 73
已采纳

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

Okay I'm trying to convert MySQL request to PDO MySQL. I already do that before but I cn't get this one working :

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

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

And here are PDO 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

I post here before ServerFault in case it my PHP code that is wrong.

By the way, here is the error :

Fatal error: Call to a member function rowCount() on a non-object in D:\Entreprises\Site web - Dev\xampp\htdocs\ushot\index.php on line 51

  • 写回答

2条回答 默认 最新

  • dongza1708 2010-10-18 01:50
    关注

    According to the list at http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html - KEY is a reserved mysql keyword.

    So you need to quote it with backticks to get valid mysql query

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

    Next: Since you're using PDO - placeholders is more preferred way to insert dynamic values into your queries:

    $stmt = $db->prepare('SELECT `key` FROM turl WHERE `key` = :key');
    $stmt->execute(array(':key' => 42));
    $result = $stmt->fetchAll();
    var_dump($result);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于大棚监测的pcb板设计
  • ¥20 sim800c模块 at指令及平台
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计