【发布时间】:2015-02-23 21:16:10
【问题描述】:
我正在使用 for 循环进行选择。我遇到的问题是我在 IN 语句中有多个值。我知道IN(term_1, term_2) 我们需要一个句点来分开每个人。当我使用 for 循环时,我不知道如何附加句点。首先,它在语句括号内而不是在末尾。
<?php
for ($i = 0; $i <= 8; $i++) {
$stm =$db->prepare("SELECT id FROM sign WHERE term IN (:term_$i) GROUP BY os.user_id order by COUNT(os.user_id) DESC ");
$stm->bindParam(":term_$i", $search_text[$i]);
$stm->execute();
}
?>
【问题讨论】:
-
你不能那样做。我的意思是,你可以,但你不会在你的 IN 语句中得到一个以上的值。准备好的语句会因 IN 语句而失败。您必须自己构建它并自己逃避价值观。
-
谢谢!如果我不使用prepare语句或mysqlprepared怎么样,我还没有尝试过。但是我有时间的时候会。谢谢你的时间。
-
@Halfstop - 实际上你可以从一个简单的数组构建准备好的语句,使用
trim(str_repeat('?, ', count($values)), ',')为IN语句设置一个简单的?占位符,然后将值作为绑定传递execute()中的数组 -
@MarkBaker Right 自己构建它,并将其填充到准备好的语句中。没有办法做到这一点,这不是 hackish。
-
@Halfstop - 但您并没有恢复引用和转义值,仍然使用准备好的语句,那么我的方法有什么奇怪的地方?