在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只是一个例子。在我的实际代码中,没有同名的占位符。