2011-08-11 41 views
0

我做一個查詢,如下所示設置SQL查詢等於陣列

select id, prefix, fname, lname, suffix, city, state, zip, bio, votes from stateChair_nominees where id=$candidate_id 

我的准考證編號等於POST方法。

$candidate_id = $_POST; 

我不斷收到這個錯誤..

選擇ID,前綴,FNAME,LNAME,後綴,市,州,郵編,生物,從stateChair_nominees票其中id =陣列」無效query1Unknown列「陣「在」 where子句

我收到無效QUERY1錯誤,因爲它關係到上模具

$result_candidate = mysql_query($sql_candidate, $link) or die("Invalid query1". mysql_error()); 

爲什麼我的ID說等於陣列?

where id=Array" 

我希望我的sql語句在投票時等於每個id。我如何獲得我的查詢來執行此操作?

謝謝:)

+0

如果你想知道爲什麼它寫數組試試這個:$ a = array(); echo「\ $ a = $ a」; –

回答

3

$_POST是通過POST通過了所有的值的數組。如果您要提交包含輸入元素名稱爲「ID」,這樣的形式,

`<input name="id" value="Your_ID_Here" />` 

你會使用$_POST['id']

此外,您的查詢容易受到SQL注入的影響。用mysql_real_escape_string()或使用準備的語句(mysqliPDO)與該值脫離。

+0

所以,如果我想做鑰匙說1,2和3 $ _POST看起來怎麼樣? $ _POST [1] 如何將其他ID放在那裏? – wowzuzz

+1

'$ _POST'是一個關聯數組。它具有字符串作爲鍵。數組鍵將是您賦予表單元素的'name'屬性。 – Hammerite

0

$ _POST是包含請求中收到的整個表單的數組。它可以幫助您查看

print_r($_POST); 

你將要參考實際的表單變量的名稱,例如:

$candidate_id = $_POST['id']; 

如果你期待的id的數組,你的SQL將需要使用IN子句和implode id數組。

$candidate_ids = $_POST['id']; 

/* escape $candidate_ids here, you can use array_walk for this */ 

$sql = 'select ... where candidate_id in (' . implode(',', $candidate_ids) . ')'; 

請確保您的動態sql是正確的escaping

+0

如果表單上的名稱元素等於變量,該怎麼辦? 例如..我的複選框等於一個變量,它等於我的數據庫中的某一行。基本上$候選人等於1,2或3或4..so。 所以如果我沒有一個名字可以參考我的 $ candidate_id = $ _POST [1]; 那我該如何將所有這些身份證放入我的邏輯? – wowzuzz

+0

print「」; 那就是我另一個表單上的按鈕。 – wowzuzz