PDO 为多个条件返回空
PDO returning empty for multiple condition
Table Items:
Source
$query = "SELECT * FROM `tbl_items` WHERE `name` LIKE '%cell%' AND `is_active`=1";
// the query is generated dynamically so i do have a dynamic params too
$params = [
'name' => '%cell%',
'is_active' => 1,
];
$prepared = $db->prepare($query);
foreach($params as $key => $val)
{
if(is_int($val))
{
$prepared->bindParam(':'.$key, $val, PDO::PARAM_INT);
}
else
{
$prepared->bindParam(':'.$key, $val);
}
}
执行后 returns 空结果 ..
不工作:
多个参数..(除了我手动绑定参数)
$prepared->bindParam(':name', $params['name']);
$prepared->bindParam(':is_active', $params['is_active']);
工作:
单个参数 ..(returns 正是我所需要的)
现在我的问题是,循环 bindParam()
时它 returns 为空的原因可能是什么?
bindParam
通过引用 取值 。意思是,在您执行 execute()
时,它采用分配给 $val
的当前值。这显然可能不是您在循环结束时所期望的。
改用 bindValue
,它会立即绑定值,而不是变量引用。
Table Items:
Source
$query = "SELECT * FROM `tbl_items` WHERE `name` LIKE '%cell%' AND `is_active`=1";
// the query is generated dynamically so i do have a dynamic params too
$params = [
'name' => '%cell%',
'is_active' => 1,
];
$prepared = $db->prepare($query);
foreach($params as $key => $val)
{
if(is_int($val))
{
$prepared->bindParam(':'.$key, $val, PDO::PARAM_INT);
}
else
{
$prepared->bindParam(':'.$key, $val);
}
}
执行后 returns 空结果 ..
不工作:
多个参数..(除了我手动绑定参数)
$prepared->bindParam(':name', $params['name']);
$prepared->bindParam(':is_active', $params['is_active']);
工作:
单个参数 ..(returns 正是我所需要的)
现在我的问题是,循环 bindParam()
时它 returns 为空的原因可能是什么?
bindParam
通过引用 取值 。意思是,在您执行 execute()
时,它采用分配给 $val
的当前值。这显然可能不是您在循环结束时所期望的。
改用 bindValue
,它会立即绑定值,而不是变量引用。