2016-09-30 9 views
0

私はメッセージを表示するシステムを持っていますが、ユーザーは正のメッセージ(1)と負のメッセージ(0)を見るオプションを持っていますが、すべてのメッセージを見ることができる1と0)と私はこのクエリを行うことができますか?MySQLのSELECT WHERE id =? AND url = 1、0 or all

の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

「IN IN」(?)や「?IN IN(?、?)」のように使用できます。 putのユーザーに応じて動的に構築する必要があります。 – jeroen

+0

'$ id'と' $ url'のデフォルト値を設定し、それに基づいて条件をチェックすることを強くお勧めします。 –

+0

@ jeroenあなたは私にコードの例を教えてもらえますか、明らかに返信が他のものより良いかもしれません。 – GePraxa

答えて

1

あなたは

のindex.phpを使用することができますか?正

のindex.phpのid = 1 & URL = 1 //?= 0 //負

インデックスのid = 1つの& URL .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); 
     } 
    ?> 

UPDATE 1:コメントを1として あなたの正しい$ urlは、それが空として考える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

私はちょうど私の答えを更新します。それは今大丈夫です.thanks @RaviHirani – JYoThI

+0

はい。見栄えが良い:-) –

関連する問題