Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中添加单引号_Php_Mysql_Pdo - Fatal编程技术网

在PHP中添加单引号

在PHP中添加单引号,php,mysql,pdo,Php,Mysql,Pdo,我在变量中使用了以下格式的输入值: ny、nj、ct 并存储在此变量中: $search\u 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 `Sta

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

ny、nj、ct

并存储在此变量中:

$search\u 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);
当我做一个不同的查询,而不是州,他们输入的是邮政编码时,这很好,所以我最终得到的结果是:
和(4504045249)
中的'zipcode'。这很好,因为它们是数字(我猜)

回到我上面的代码…如果我尝试这样的状态:
和(ny,nj,ct)中的“states”
我会得到错误,说
ny
不是列。如果我能像这样运行查询,它就会工作:
和('ny','nj','ct')中的'states'


这里最好的方法是什么?有没有一种简单的方法可以在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);

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


您可以
infrade()
in()
中使用引号之前,先将其包含在列表中。我该怎么做?
$newList=“(”)。infrade(“,”,$OLDLIST)。“”)“
@Ryan_W4588谢谢。这让我走上了正确的方向。我也修改了一点php,不使用sprintf,只在转换后使用变量。你可以
内爆()
在列表中包含引号,然后在
中使用它们。
我该怎么做?
$newList=“(”。内爆(“,”,$OLDLIST)。“”
@Ryan\u W4588谢谢。这让我走上了正确的方向。我也修改了一点php,不使用sprintf,只在转换后使用变量。你可以
内爆()
在列表中包含引号,然后在
中使用它们。
我该怎么做?
$newList=“(”。内爆(“,”,$OLDLIST)。“”
@Ryan\u W4588谢谢。这让我走上了正确的方向。我也更改了一点php,不使用
sprintf
,只在转换后使用变量。
:color
!==<代码>:colorpicked@Rizier123为什么
==,难道他不想要
=
?除此之外,编辑得很好。@Ryan_W4588占位符不一样name@Rizier123我现在明白了,我完全疯了。你是说它们不是等价的,我以为你是在直接编辑他的代码。我道歉哈哈,你说得对@里泽尔:接得好。sql只是一个例子。在我的实际代码中,我没有同名的占位符。
:color
!==<代码>:colorpicked
@Rizier123为什么
==,难道他不想要
=
?除此之外,编辑得很好。@Ryan_W4588占位符不一样name@Rizier123我现在明白了,我完全疯了。你是说它们不是等价的,我以为你是在直接编辑他的代码。我道歉哈哈,你说得对@里泽尔:接得好。sql只是一个例子。在我的实际代码中,我没有同名的占位符。
:color
!==<代码>:colorpicked
@Rizier123为什么
==,难道他不想要
=
?除此之外,编辑得很好。@Ryan_W4588占位符不一样name@Rizier123我现在明白了,我完全疯了。你是说它们不是等价的,我以为你是在直接编辑他的代码。我道歉哈哈,你说得对@里泽尔:接得好。sql只是一个例子。在我的实际代码中,没有同名的占位符。