2014-03-28 32 views
0

我想通過設置sql來忽略where子句,該子句需要忽略另一個變量中的where子句。我可以忽略另一個sql查詢中的where子句嗎

但是,當我嘗試運行它沒有顯示。

當我刪除sql變量"$test"並將連接設置在$requete內。然後,它會工作,但犯規忽略where子句:

<?php 
// List of events 
$json = array(); 
// Query that retrieves events 

$requete = " SELECT distinct `evenementontvanger`.`idEvent`,`evenementontvanger`.`idProject`,`evenementontvanger`.`idKlant`, 
`evenement`.`id`,`evenement`.`title`,`evenement`.`start`,`evenement`.`startdate`,`evenement`.`starttime`, 
`evenement`.`end`,`evenement`.`enddate`,`evenement`.`endtime`,`evenement`.`description`,`evenement`.`color` 
FROM `evenement` LEFT JOIN `evenementontvanger` ON `evenementontvanger`.`idEvent` = `evenement`.`id` WHERE `idEvent`=`evenement`.`id`"; 

$test ="LEFT JOIN `Werknemer` ON `Werknemer`.`idWerknemer`=`evenementontvanger`.`idWerknemer`"; 

// connection to the database 
try { 
$bdd = new PDO('mysql:host=localhost;dbname=blackboks-calendar', 'calendar-boks', '19xantia'); 
} catch(Exception $e) { 
    exit('Unable to connect to database.'); 
} 
// Execute the query 
$resultat = $bdd->query($requete,$test) or die(print_r($bdd->errorInfo())); 

// sending the encoded result to success page 
echo json_encode($resultat->fetchAll(PDO::FETCH_ASSOC)); 

?> 
+0

你從哪兒弄來添加查詢部分作爲查詢的這個想法()參數呢? –

+0

你的意思是查詢($ requete,$ test)我認爲這將通過這個來完成,但我不知道如果我正確與 – Rene

+0

你在閱讀query()手冊頁時是否有這個想法的任何證明? –

回答

2
<?php 
$foo = true; 

// Query that retrieves events 
if ($foo) { 
    $auxJoin =" 
     LEFT JOIN 
      `Werknemer` 
     ON 
      `Werknemer`.`idWerknemer`=`evenementontvanger`.`idWerknemer` 
    "; 
} 
else { 
    $auxJoin = ''; 
} 

$requete = " 
    SELECT 
     distinct `evenementontvanger`.`idEvent`,`evenementontvanger`.`idProject`,`evenementontvanger`.`idKlant`, 
     `evenement`.`id`,`evenement`.`title`,`evenement`.`start`,`evenement`.`startdate`,`evenement`.`starttime`, 
     `evenement`.`end`,`evenement`.`enddate`,`evenement`.`endtime`,`evenement`.`description`,`evenement`.`color` 
    FROM 
     `evenement` 
    LEFT JOIN 
     `evenementontvanger` 
    ON 
     `evenementontvanger`.`idEvent` = `evenement`.`id` 
    $auxJoin 
    WHERE 
     `idEvent`=`evenement`.`id` 
"; 



// connection to the database 
try { 
    $bdd = new PDO('mysql:host=localhost;dbname=blackboks-calendar', 'calendar-boks', '19xantia'); 
    $resultat = $bdd->query($requete,$test) or die(print_r($bdd->errorInfo())); 
    $data = $resultat->fetchAll(PDO::FETCH_ASSOC) 
} 
catch(Exception $e) { 
    $data = array('error'=>'Unable to connect to database.'); 
} 

// sending the encoded result to success page 
echo json_encode($data); 
1
$test = "LEFT JOIN Werknemer W ON W.idWerknemer = et.idWerknemer"; 
$sql = "SELECT ... LEFT JOIN ... FROM ON idEvent = e.id $test WHERE ..."; 

現在你可以添加或刪除部分動態

+0

我需要忽略$ test join中的where子句當我這樣做時,像你的答案那樣,where子句不會被忽略,因爲「LEFT JOIN Werknemer ..」部分 – Rene

+0

你總是可以讓$ test爲空,你知道 –

+0

是的,但是我需要在查詢中運行$ test。 – Rene