【发布时间】:2013-06-08 17:10:17
【问题描述】:
我正在尝试使用“where in”子句获取顶级信息,但如果我使用 bindvalue 或 bindparam,我不会得到任何结果。
这是我没有给出任何结果的查询
$user2 = $db->prepare("Select top 100 memb_guid,memb___id,mail_addr,Gender,Country from MEMB_INFO where memb___id in (Select memb___id from MEMB_STAT where IP = :ip)");
$user2->bindValue(':ip','127.0.0.1',PDO::PARAM_STR);
$user2->execute();
如果我使用不带任何绑定值或参数的直接搜索,我会得到结果
$user2 = $db->prepare("Select top 100 memb_guid,memb___id,mail_addr,Gender,Country from MEMB_INFO where memb___id in (Select memb___id from MEMB_STAT where IP = '127.0.0.1')");
$user2->execute();
谁能帮我在这个搜索“where in”子句中使用绑定值或参数?
@PhilCross 这是我在使用 var_dump 时得到的:
object(PDOStatement)#4 (1) { ["queryString"]=> string(142) "Select top 100 memb_guid,memb___id,mail_addr,Gender,Country from MEMB_INFO where memb___id in (Select memb___id from MEMB_STAT where IP = :ip)"
Ps:我使用的是 MSSQL Server
【问题讨论】:
-
需要
PDO::PARAM_STR吗? -
启用 MySQL 查询日志并查看正在运行的内容
-
在 SQL 查询中加单引号?
where IP = ':ip') -
PDO 准备好的语句不需要在值周围加上引号。 @MandoMadalin 您可以在第一个查询的第一行之后直接在 $user2 上执行
var_dump()吗?可能有一个 PDO 错误,由于您的错误处理,它没有被抛出。此外,将 PDO 的错误处理设置为抛出异常并将$db->prepare代码包装在try / catch块周围。 -
@David,准备好的语句不应该在参数周围加上引号。
标签: php sql pdo where bindvalue