CodeIgniter中SQL语句的动态数量?

时间:2017-11-02 16:59:08

标签: codeigniter

我有一个包含动态数量字符串的数组

$arr = array("aaaaa", "bbbbb", "ccccc");

如何创建SQL语句,如:

$sql = "SELECT * FROM table WHERE name=? OR name=? OR name=?";
$query = $this->db->query($sql, $arr));

动态

3 个答案:

答案 0 :(得分:2)

如果您正在使用CI查询生成器,则可以使用where_in(也称or_where_in)个函数。

http://www.codeigniter.com/userguide3/database/query_builder.html#looking-for-specific-data

  

$这 - > DB-> where_in()

     

生成WHERE字段IN('item','item')SQL查询与AND连接(如果适用)

     

$ names = array(' Frank',' Todd',' James');

     

$ this-> db-> where_in(' username',$ names);

     

//生成:WHERE用户名IN(' Frank',' Todd',' James')

 $arr = array('a','b','c');
 $this->db->where_in('name', $arr);

答案 1 :(得分:0)

这可能会满足您的需求。它将根据您的数组大小动态创建一个SQL查询。

$arr = array("aaaaa", "bbbbb", "ccccc");
$sql = "SELECT * FROM table WHERE";
for($i = 0; $i < count($arr); $i ++){
   if($i > 0){
        $sql .= " OR "; 
   }
   $sql .= " name=?";
}
echo $sql; // SELECT * FROM table WHERE name=? OR name=? OR name=?

答案 2 :(得分:0)

如何使用array_fill()

def "When i decide create new product"() {

        def future = new CompletableFuture<Boolean>()

        when:

        repository.checkProductExists("Fake string") >> future
        future.complete(true)

        def result = this.factory.create(fakeOfferData())
        then:
        result instanceof Product
    }