我正在进行如下查询
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。如何让我的查询执行此操作?
谢谢:)
答案 0 :(得分:3)
$_POST
是通过POST传递的所有值的数组。如果您要提交一个包含名称为“id”的输入元素的表单,请执行此操作,
`<input name="id" value="Your_ID_Here" />`
你会使用$_POST['id']
。
此外,您的查询容易受到SQL注入攻击。使用mysql_real_escape_string()
转义该值或使用预准备语句(mysqli或PDO)。
答案 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。