2011-08-11 44 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