2013-04-17 26 views
0

我找的想法來改變無線電與它複選框,使SQL SELECT:變化與無線電覆選框和SQL有幾個類別

現在,用戶通過形式的無線電選擇類別(一類)代碼:

$zapytanie = $pdo->prepare('SELECT * FROM pytania_new WHERE Kategoria = :kategoria'); 

和腳本顯示所有問題,我們選擇了一個類別。

現在我想選擇幾個類別,所以我改變了我的當前代碼,以顯示覆選框的形式,並將選擇的類別保存到數組,但現在我不知道如何執行SQL,它向我展示了幾個問題類別

$zapytanie = $pdo->prepare('SELECT * FROM pytania_new WHERE Kategoria = :kategoria AND :kategoria2'); 

這不想工作。

接下來的問題是如何檢查SQL從數據庫中應該下載多少類別。

我希望你能幫我嗎?:)

回答

0

AND運營商需要柱被提及,而不是在你的情況Kategoria = :kategoria AND Kategoria2 = :kategoria2

重視 左右,但我們沒有你的結構,也許你不沒有第二欄,所以你需要收到2行作爲結果?然後使用OR操作:

Kategoria = :kategoria OR Kategoria = :kategoria2

0

你可以用一個簡單的for循環做到這一點。

$categories = array("first","second"); 
$query = ""; 
$delimiter = ""; 
foreach($categories as $category) { 
    $query .= $delimiter . "kategoria = $category"; 
    $delimiter = " OR "; //Dont really know how your sql looks but this makes more sense. Otherwise change to AND if a row can have multiple categories 
} 
$sql = "SELECT * FROM pytania_new WHERE $query"; 
+0

我不想使用OR 我有剛剛發現這一點: SELECT * FROM Pytania酒店WHERE Kategoria IN( 「UTK」, 「親」) 而在phpMyAdmin工程:) 但在POD不 試過這樣: $ licz = $ pdo-> query('SELECT COUNT(*)FROM pytania_new WHERE Kategoria IN(:kategorie)'); // policzenie wedlug kategorii zdefiniowanej w'bindValue' $ licz - > bindValue(':kategorie',$ kategories,PDO :: PARAM_STR) ; // przypisanie wartosci $ kategoria dla'bindValue' $ licz - > execute(); 但它沒有工作:/ 我認爲這個問題在BindValue中,因爲它是數組,不是STR,你知道其他一些數組的參數嗎? – SkuterPL

+0

好的,我發現解決這個問題:$ licz = $ pdo-> prepare(「SELECT COUNT(*)FROM pytania_new WHERE Kategoria IN('$ kategories')」); ('UTK,Pro'))0 他們是錯誤的('UTK,'),但是當我嘗試選擇2類別,查詢看起來像這樣:PDOStatement對象([專業'),因爲它應該是('UTK','專業'),我試圖改變這一點,但它不工作:/任何建議? – SkuterPL

+0

好吧,我做到了:)我明天會寫我是如何做到的,因爲現在我無法做到 – SkuterPL

0

好了,第一,我們要爲所有類別像這樣創建的字符串:

$kategorie = join(',',$kategoria); 

之後,有簡單的SQL可以在基地找幾個類別

$zapytanie = $pdo->prepare("SELECT * FROM pytania_new WHERE Kategoria IN ($kategories)"); 

它是全部:)