【问题标题】:PDO prepared statement problemPDO 准备好的语句问题
【发布时间】:2011-07-13 10:39:21
【问题描述】:

我有一个数据库“书籍”

book_id     author          title
   1     O'Brien, Tim     MSXML3: A Comprehensive Guide
   2     O'Brien, Tim     Microsoft .NET: The Programming Bible
   3     Kress, Peter     Paradox Lost
   4     Knorr            Creepy Crawlies
   5     Thurman, Paula   Splish Splash

我正在使用 PDO 开发我的数据库类。 我的 pdo conn 字符串带参数:obj =new PDO("mysql:host = localhost; dbname = testing",root,'')


最后我的班级正在发送查询:$query(say)=SELECT * FROM books WHERE book_id = ? AND author = ?

这里'?'表示准备好的查询的参数标记。 当我准备我的查询时:$result = obj->prepare($query);

将 $param 中的 book_id 和 author 保存为:$param =array(1,Knorr);

现在我正在执行它:$result->execute($param);

Itz 不工作。查询不执行。经过长时间的研究,我尝试使用数据库名称查询表名,例如:SELECT * FROM testing.books WHERE book_id = ? AND author = ? 并执行..它像黄油一样执行和工作......

现在的问题是,这正在发生吗??..没有 pdo 的文章提到它也可能发生。 Sumone 请告诉你我必须在 wid 表名中使用数据库名???

【问题讨论】:

  • 丢掉空格("mysql:host=localhost;dbname=testing")

标签: php pdo prepared-statement


【解决方案1】:

尝试使用从连接字符串中删除的空格:

obj =new PDO("mysql:host=localhost;dbname=testing",root,'')

在我看来,您似乎很可能没有在连接时被放入“测试”数据库,我猜您的连接字符串中的空格会混淆 PDO 初始化代码,并将您留在默认数据库中.

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 2011-06-21
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 2017-09-29
    • 2014-07-20
    相关资源
    最近更新 更多