2016-09-30 88 views
0

我有一個系統顯示消息,但用戶可以選擇看到正(1)和負(0)消息,但也有一個鏈接,您可以看到所有消息( 1和0),我可以做這個查詢?Mysql SELECT WHERE id =? AND url = 1,0或全部

的index.php?ID = 1個& URL = 1

<?php 
function mesage($id, $url) { 
$db = DB::getInstance(); 
$query = $db->query("SELECT * FROM mesage WHERE id = ? AND url = ?", array($id, $url)); 
$results = $query->results(); 
return ($results); 
} 

$url = isset($_GET["url"])?$_GET["url"]:'Select 0 and 1'; 
$id = $_GET['id']; 
$getmesaje = mesage($id, $url); 
?> 

正如我可以改變 「Select 0 and 1」 變量 「$url」 這個詞來顯示所有?

+1

你可以像'url IN(?)'或'url IN(?,?)'那樣使用'IN'。您必須根據投入的用戶動態構建它。 – jeroen

+0

我強烈建議爲'$ id'和'$ url'設置默認值,並根據它檢查條件。 –

+0

@ jeroen你可以給我一個代碼的例子,顯然答覆可能比其他人好。 – GePraxa

回答

1

您可以使用

的index.php?ID = 1個& URL = 1 //正

的index.php?ID = 1個& URL = 0 //爲負

指數.php?id = 1 //對於所有人

<?php 
function mesage($id, $url) { 
    $db = DB::getInstance(); 
    if(empty($url)) { 
     $query = $db->query("SELECT * FROM mesage WHERE id = ?",$id); 
    } else { 
     $query = $db->query("SELECT * FROM mesage WHERE id = ? AND url = ?", array($id, $url)); 
    } 
    $results = $query->results(); 
    return ($results); 
} 

$url = isset($_GET["url"])?$_GET["url"]:''; 
$id = $_GET['id']; 
$getmesaje = mesage($id, $url); 
?> 
+0

這將在OP的情況下工作。我們應該確保'$ id'和'$ url'具有有效值並且不會破壞我們的查詢 –

+0

不起作用,值0被識別爲$ url不存在並且拋出所有(正面和負面)評論 – GePraxa

1

準備動態查詢取決於用戶輸入。並在where子句中使用IN

<?php 
     function mesage($id, $url) { 

     $concatenate=''; 

     if(!empty($url)) 
     { 

      $concatenate.= " AND url IN(?)"; 

      $param = array($id, $url); 
     } 
     else 
     { 
      $param = array($id); 

     } 

     $db = DB::getInstance(); 
     $query = $db->query("SELECT * FROM mesage WHERE id = ? $concatenate ",$param); 
     $results = $query->results(); 
     return ($results); 
     } 

     $url = isset($_GET["url"])?$_GET["url"]:''; 
     $id = $_GET['id']; 

     if(!empty($id)) 
     { 
      $getmesaje = mesage($id, $url); 
     } 
    ?> 

更新1: 根據你的正確的,當$網址帶有0值它認爲是空的評論。所以它應該是這樣的if(strlen($url)>0){}

<?php 
    function mesage($id, $url) { 

    $concatenate=''; 

    if(strlen($id)>0) 
    { 

     $concatenate.= " AND url IN(?)"; 

     $param = array($id, $url); 
    } 
    else 
    { 
     $param = array($id); 

    } 

    $db = DB::getInstance(); 
    $query = $db->query("SELECT * FROM mesage WHERE id = ? $concatenate ",$param); 
    $results = $query->results(); 
    return ($results); 
    } 

    $url = isset($_GET["url"])?$_GET["url"]:''; 
    $id = $_GET['id']; 

    if(strlen($id)>0) 
    { 
     $getmesaje = mesage($id, $url); 
    } 
?> 
+0

這將工作,但我們應該確保'$ id'和'$ url'具有有效值並且不會破壞我們的查詢。 –

+0

我只是更新我的答案。現在好了。謝謝@RaviHirani – JYoThI

+0

是的。看起來不錯:-) –

相關問題