将SQL查询设置为等于数组

时间:2011-08-11 16:44:12

标签: php mysql

我正在进行如下查询

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

我的候选人ID等于post方法。

$candidate_id = $_POST;

我一直收到这个错误..

从stateChair_nominees中选择id,prefix,fname,lname,suffix,city,state,zip,bio,votes其中id = Array“where子句中无效的query1Unknown列'Array'

我收到了无效的query1错误,因为它发生在模具

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

为什么我的id与数组相同?

where id=Array"

我希望我的sql语句在投票时等于每个id。如何让我的查询执行此操作?

谢谢:)

2 个答案:

答案 0 :(得分:3)

$_POST是通过POST传递的所有值的数组。如果您要提交一个包含名称为“id”的输入元素的表单,请执行此操作,

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

你会使用$_POST['id']

此外,您的查询容易受到SQL注入攻击。使用mysql_real_escape_string()转义该值或使用预准备语句(mysqliPDO)。

答案 1 :(得分: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) . ')';

确保您正确escaping动态sql。