在PHP中添加单引号

时间:2015-06-11 17:36:14

标签: php mysql pdo

我在这种格式的变量中使用输入值:

ny,nj,ct

并存储在此变量中:

$search_crit

然后我运行以下

$list = explode(',', $search_crit);
array_map(array($dbh, 'quote'), $list);
$sql1 = sprintf('SELECT  `Provider Number`,`Number of Cases` FROM `mytable` where`color` = :colorpicked and `State` in (%s) group by `Provider Number`', implode(',', $list));
$stmt = $dbh->prepare($sql1);
$stmt->bindParam(':color', $colorSel, PDO::PARAM_STR);
$stmt->execute();
$result1 = $stmt->fetchAll(PDO::FETCH_ASSOC);

当我执行不同的查询而不是状态时,它可以正常输入邮政编码,所以我最终会得到这样的结果:and 'zipcode' in (45040,45249)。这很好,因为它们是数字(我猜)。

回到上面的代码...如果我尝试这样的状态:and 'states' in (ny,nj,ct)我会收到错误,说ny不是一列。如果我可以以某种方式运行这样的查询,它可以工作:and 'states' in ('ny','nj','ct')

这里最好的方法是什么?有没有一种简单的方法在PHP中插入单引号?我是否应该更改查询以接受可能是任何数字的状态列表(ny,nj,ct)(例如,3个州或15个州)?

1 个答案:

答案 0 :(得分:0)

感谢@ Ryan_W4588指出我正确的方向来准备变量。我不得不改变我的PHP代码以适应这一点。

$list = explode(',', $search_crit);
$newList = "'" .implode("','",$list) ."'";
$sql1 = "SELECT  `Provider Number`,`Number of Cases` FROM `mytable` where`color` = :colorpicked and `State` in ({$newList}) group by `Provider Number`";
$stmt = $dbh->prepare($sql1);
$stmt->bindParam(':color', $colorSel, PDO::PARAM_STR);
$stmt->execute();
$result1 = $stmt->fetchAll(PDO::FETCH_ASSOC);