在 PHP 中添加单引号


Add single quotes in PHP

我在变量中使用了以下格式的输入值:

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 个州)?

感谢@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);