PDO bindValue 不允许特定参数通过 (PHP)
问题:PDO bindValue 不允许特定参数通过 (PHP) 我正在将 PHP 与 PDO 一起用于 PostgreSQL。当我尝试将特定值绑定到我的查询中时,我出现了奇怪的行为。我所拥有的是以下内容: $value[0][$i] = "'%{$filtervalue}%'"; $values[] = & $value[0][$i]; $result = $pdo->prepare($quer
·
问题:PDO bindValue 不允许特定参数通过 (PHP)
我正在将 PHP 与 PDO 一起用于 PostgreSQL。当我尝试将特定值绑定到我的查询中时,我出现了奇怪的行为。我所拥有的是以下内容:
$value[0][$i] = "'%{$filtervalue}%'";
$values[] = & $value[0][$i];
$result = $pdo->prepare($query);
$result->bindValue(':condition', $values[0]);
$result->bindValue(':starts', $start);
$result->bindValue(':pagesize', $pagesize);
现在$query
参数返回
SELECT orderDate, shippeddate, shipName,
shipaddress, shipcity, shipcountry
FROM orders WHERE ( shipcity LIKE :condition )
LIMIT :pagesize OFFSET :starts
这正是我想要的。但是问题在于$vales[0]
参数,因为$pagesize
和$start
工作正常。
当我使用$vales[0]
参数执行时,结果什么也没有返回。
然而,当我改变
$result->bindValue(':condition', $values[0]);
至
$result->bindValue(':condition', '%Bern%');
它适用于该特定条件并显示结果。
我加倍检查以确保$values[0]
返回'%Bern%'
并且确实如此。
我什至检查了类型是字符串,它是。
我什至添加了PDO::PARAM_STR
仍然没有。
我对它为什么不起作用的想法一无所知。
解答
需要 2 处更改:
$value[0][$i] = "'%{$filtervalue}%'";
需要是$value[0][$i] = "%{$filtervalue}%";
和
$values[] = & $value[0][$i];
需要是$values[] = $value[0][$i];
_注意:-_可以直接使用$value[0][$i]
,不需要创建额外的变量,这样做:
$value[0][$i] = "%{$filtervalue}%";
$result = $pdo->prepare($query);
$result->bindValue(':condition', $value[0][$i]);
$result->bindValue(':starts', $start);
$result->bindValue(':pagesize', $pagesize);
更多推荐
已为社区贡献19918条内容
所有评论(0)