【发布时间】:2015-01-29 08:42:11
【问题描述】:
我无法让这个使用 PDO 对象和带有用户定义变量的 MySQL 的脚本工作。我了解到使用 PDO 不能在一次调用中执行两个查询,因此我将其拆分为两个 query() 调用。但它仍然无法正常工作。这是我脚本的摘要(与 MySQL 的连接当然是在不同的文件中完成的,我在这里复制了它,所以为了这个问题,它都在一个地方):
$db_hostname = 'localhost';
$db_username = 'username';
$db_password = 'pwd';
$db_name = 'dbname';
$dsn = "mysql:dbname=$db_name; host=$db_hostname";
$pdo = new PDO($dsn, $db_username, $db_password);
$strsql = "SET @num := 0, @tp := ''";
$result=$pdo->query($strsql);
$strsql = "SELECT " . $offer . "_tp AS tp, " . $offer . "_level AS best_offer, Price
FROM (
SELECT " . $offer . "_tp, " . $offer . "_level, Price,
@num := if(@tp = `" . $offer . "_tp`, @num + 1, 1) as level,
@tp := `" . $offer . "_tp` as dummy
FROM tbl_limit_offers
WHERE Prod_Code = $procCode) as x
WHERE x.level = 1";
$result = $pdo->query($strsql);
echo $result->rowCount()
如果我直接在 PHPmyAdmin 中运行该查询,它会返回几条记录。但是,使用 PDO 对象运行它我得到:
致命错误:在非对象上调用成员函数 rowCount()
$result 应该是 PDOStatement 对象,rowCount() 应该是它的方法之一。那么,为什么它不起作用?
【问题讨论】:
-
尝试做 var_dump($result) 会显示什么。
-
试试:
$result->fetchColumn()这对你有用吗? (在你这样做之前,还要在你的 SQL 中添加COUNT(*)) -
@justrohu var_dump($result) 显示:boolean false
-
似乎 PDOStatement 对象从未实例化。
-
@user2395238 是的,它看起来像......你能做 var_dump($pdo)