2014-02-15 21 views
1

例子中,我越来越从我的分贝2变量($ V1,V2 $)编程WHERE部分SQL

SELECT * FROM mytable WHERE id=$1 AND $v2 

但在另一个例子中即时得到来自DB(3变量$ V1,V2 $, $ v3)在相同的查询导致我像它一样进步。在这种情况下我怎么能计划,使SQL查询语句

编辑

WHERE id=$v1 AND $v2 AND $v3 // i want to add it And conditions automaticly 
+0

你想知道'id'等于多个值? '$ v2'或'$ v3'中有什么?你是否在这些变量中添加了SQL字符串条件?或实际数据? – Brad

+0

'id = x和y'没有什么意义。 'id' supposd是否等于这两个值,或者'id'是否等于这两个值的逻辑AND? –

+0

我从来没有使用和条件我再次写id = $ v2.whatever这不是问题的问题是我怎样才能在sql查询编程 – user3301042

回答

1

如果你想选择多个ID值,请使用条件:

SELECT * FROM mytable WHERE id IN ($v1, $v2, $v3)

编辑:要求灵活的方法来增加值:

假设设置了此查询通过一个函数,这个函数将接收应该在where子句中的所有ID值。喜欢的东西:

<?php 

$example_ids = array(1, 5, 7, 15, 22); 

wherein($example_ids) 

function wherein($ids){ 
    // Select part 
    $query = "SELECT * FROM mytable "; 

    // Where statement 
    $where = " WHERE id IN ("; 

    // For loop to use each value sent 
    // as a value in IN (... 
    for ($i=0; $i < count($ids); $i++) { 
     // Eg: $i = 0 
     // $ids[$i] = 1 
     // 
     // So: 
     // WHERE id IN (1 
     $where .= $ids[$i]; 

     // If its not the last value then 
     // add a comma for SQL syntax 
     if ($i < count($ids) - 1) 
      /// Where id IN (1, 
      $where .= ","; 
    } 

    // At the end of the loop, $where must be 
    // something like: 
    // WHERE id IN (1,5,7,15,22 
    // 
    // Once again, for SQL syntax, the close) 
    $where .= ")"; 

    // Finaly, the last step, putting all together: 
    // SELECT * FROM mytable WHERE id IN (1,5,7,15,22) 
    $query .= $where; 
} 
+0

但另一次我会得到8值,我想把它们放在那里与在sql查询中的程序我该如何做 – user3301042

+0

然后您必须: 1.组织数组中的ID 2.在for循环中,使用逗号连接每个变量 3.检查最后一个值以防止SQL语法错误 4.关闭哪里clausule 5.连接主要查询与此where变量。 我会更新代码。 –

+0

好吧,我得到你的答案是我需要的。更新代码 – user3301042

1

如果您需要找到包含您的任何变量的任何记录,您可以使用OR如下

SELECT * FROM mytable WHERE id = $v1 OR id = $v2 OR id = $v3 
+0

好吧,我会使用或butb真正的问题是不同的 – user3301042

+0

什么是真正的问题呢? – Fabio

+0

我的问题不清楚吗?另一次我会得到8值,另一个只是2我想要添加它或自动条件 – user3301042