2017-07-07 48 views
0

我有一個包含藝術家列表和三個按鈕的頁面;攝影師,化妝師,所有如何設置參數,以便在未設置時不過濾SQL查詢

我想查詢數據庫,選擇通過$ _GET每種類型的點擊這是很容易的前兩個我可以設置URL時,任何一個按鈕來?類型=攝影師

但是當我想類型設置爲所有,有一個名爲所有類型列沒有價值,我試圖將類型設置爲*,但它不工作

SELECT name, location, score, type FROM artists WHERE type = ? 

如何設置類型顯示所有該變量應該等於什麼?

編輯:我已經使用!空方法,現在我想添加更多的規則到我的查詢,它變得越來越複雜,任何其他解決方案,我不必在if和else有兩個查詢?

+1

只要不添加'WHERE ...'給你sql-query。 –

回答

0
$cond = 1; 
if(!empty($_GET)){ 
    $cond = ' type = '.$_GET['your-query-string']; 
} 

SELECT name, location, score, type FROM artists WHERE $cond 
+2

'WHERE 1'?真的嗎? –

+0

是的肯定去吧 –

+4

第二個問題 - sql注入。你知道這是什麼? –

0

只要在$ _GET上做一個條件並相應地改變你的SQL查詢。如果你想選擇所有的條目,你不需要在哪裏。

-1

下面的代碼塊將整個問題你都面臨着:

$query = "SELECT name, location, score, type FROM artists"; 
if(!empty($_GET)) { 
    $whereArgs = "WHERE type = ".$_GET['your-query-string']; 
} 
// Run your query using `$query` here. 
+0

這個建議是_dangerous_。不要這樣做。您可以[SQL注入](http://php.net/manual/en/security.database.sql-injection.php)開放,並且確實應該使用[Prepared Statements](http://php.net/manual) /en/mysqli.quickstart.prepared-statements.php)而不是串聯你的查詢。 –

1

看來你有兩個選擇,
1.創建基本的SQL查詢SELECT name, location, score, type FROM artists並添加where子句基於該類型(如果類型是ALL不附加子句)。
2.當點擊ALL時,確實通過所有類型(攝影師,化妝師)並檢查
WHERE type IN();

+0

在第一個選項,我該如何停止查詢鍵入一些PHP,將返回哪裏只有當有一個類型,你能給我一個如何把PHP中的SQL的例子? – Krim

+0

對不起,不熟悉PHP語法,爲什麼只是建議這個想法,而不是寫腳本。雖然檢查click事件的值並更新sql語句並執行它似乎並不困難。可能是我猜錯了。 – money

相關問題