2014-02-15 23 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