2012-05-16 37 views
0

我正在構建一個站點,我需要檢索一些信息。我有這個查詢。SQL查詢結果,比較和where子句

$SQL = "SELECT distretto_108, provinca_113, regioni_116, tipologia_pdv_106, 
     richiesta_ccnl_107, coop_va_109, nome_pdv_110, 
     indirizzo_pdv_111, localita_112 
     FROM civicrm_value_informazioni_su_tute_le_schede_p_22 "; 

我需要添加這其他代碼:

WHERE civicrm_event.title_en_US='".addslashes($_GET["titles"])."' 

,但它不工作... 我需要比較讓我們說另一個表的id與當前表的id .. 。 怎麼做?

在此先感謝...

+3

你好** SQL注入**! – gdoron

+0

哦,不,不,我正在嘗試添加一些表格...我必須爲事件創建報告... –

+0

1.使用mysql_real_escape_string()或帶有參數綁定的PDO而不是addslashes()2.什麼是問題?爲什麼你不能添加where子句?你想達到什麼目的? – evan

回答

0

你應該學會的東西有關連接表...

不知道的關係是什麼樣的兩個表之間(簡單地說:從一臺什麼樣的列指向在另外一個什麼樣的列),但嘗試類似的東西(需要修改,以滿足您DB結構) - 現在讓我們假設這兩個表都列相關稱爲事項標識:

$SQL = "SELECT distretto_108, provinca_113, regioni_116, tipologia_pdv_106, 
     richiesta_ccnl_107, coop_va_109, nome_pdv_110, 
     indirizzo_pdv_111, localita_112 
    FROM civicrm_value_informazioni_su_tute_le_schede_p_22 cvistlsp22 
    LEFT JOIN civicrm_event ce ON ce.event_id = cvistlsp22.event_id 
    WHERE ce.title_en_US='".mysql_real_escape_string($_GET["titles"])."'"; 

civicrm_value_informazioni_su_tute_le_schede_p_22表的名字很長,你會無法在其他DBMS中創建具有這種長名稱的表(例如, ORACLE),所以儘量把它縮短,同時還自描述...

如果你想加入他們必須有一個關係表,瞭解更多關於關係,以及如何將它們在這裏使用:http://net.tutsplus.com/tutorials/databases/sql-for-beginners-part-3-database-relationships/

0

您在查詢中從表civicrm_value_informazioni_su_tute_le_schede_p_22中檢索數據,而您正在添加的where子句指的是表civicrm_event。您需要將這個新表添加到from子句中,並使用一些公用密鑰在兩個表中進行連接。示例如下:

$SQL = " 
SELECT distretto_108, provinca_113, regioni_116, tipologia_pdv_106, richiesta_ccnl_107, coop_va_109, nome_pdv_110, indirizzo_pdv_111, localita_112 
FROM civicrm_value_informazioni_su_tute_le_schede_p_22 
    JOIN civicrm_event ON civicrm_value_informazioni_su_tute_le_schede_p_22.ID_PK = civicrm_event.ID_FK 
WHERE civicrm_event.title_en_US='".addslashes($_GET["titles"]) 
"; 

您需要將ID_PK和ID_FK替換爲將表綁定在一起的相關主鍵和外鍵。

請注意不建議使用這樣的查詢參數。請閱讀PHP Documentation here獲取更多解釋。