【发布时间】:2014-09-23 13:26:00
【问题描述】:
这是我准备好的声明。
SELECT `id`, `title`, `image`, `discount`, `price`, `new_price`, `img_url` FROM `deals` WHERE `active`="1" AND `category`=:ctid AND `img_url`!="" AND `Brands`=:p1 ORDER BY `order`, `id` ASC LIMIT 0, 12;
这是我在bindParam 中使用的数组。
Array
(
[:ctid] => 1
[:p1] => Apple
)
这是 PHP 代码:
$sql = 'SELECT `id`, `title`, `image`, `discount`, `price`, `new_price`, `img_url` FROM `deals` WHERE `active`="1" AND `category`=:ctid AND `img_url`!="" AND `Brands`=:p1 ORDER BY `order`, `id` ASC LIMIT 0, 12;';
$sql = $link->prepare( $sql );
$binders = array(
':ctid' => 1,
':p1' => 'Apple'
);
foreach( $binders as $key => $value ) {
$sql->bindParam( $key, $value );
}
$sql->execute();
$sql->setFetchMode( PDO::FETCH_ASSOC );
$result = $sql->fetchAll();
这没有结果。
但是,如果我进行直接查询,我会从数据库中获得结果。上述查询可能有什么问题。
感谢任何帮助。
【问题讨论】:
-
您检查过任何错误吗?
-
能否请您添加从直接查询获得的结果?所以我们将能够看到你在数据库中有什么......
-
@u_mulder 没有收到任何错误。
-
@RamSharma 列名在 MySQL 中不区分大小写。
-
我认为问题在于
bindParam,因为它是通过引用绑定的。你试过bindValue吗?
标签: php mysql pdo prepared-statement