2013-05-02 53 views
0

的HTML:PHP + MySQL的:如何从一个复选框中选择值

<form method="post" action="form.php"> 
    <input type="checkbox" name="foo[]" value="1"/>This<br/> 
    <input type="checkbox" name="foo[]" value="3"/>That<br/> 
    <input type="checkbox" name="foo[]" value="4"/>Those<br/> 
    <input id="btnClick" type="submit" /> 
</form> 

的PHP:

foreach ($_POST['foo'] as $va) 
{ 
    $stmt1 = $conn->prepare("select sum(field) from table where field2 in ($va)"); 
    $stmt1->execute($data1); 

    $result1 = $stmt1->fetchAll(); 
    print_r(var_dump($va)); 
    ... 
} 

问题:

这让我只能做查询时我选择一个复选框,如果我选择2或更多,它只需要最后选择的值。

我在那里错过了什么?

在此先感谢。

+0

您必须更改名称attibute别的东西,所以你可以访问它们独立,如姓名=“fooThis”和名称=“fooThat”等。 .. – 2013-05-02 02:07:15

+1

@CorvinMcpherson - 这是不正确的;在HTML中,ID必须是唯一的,但名称不需要。 – 2013-05-02 02:09:14

+0

先生你可能想访问这个http://stackoverflow.com/questions/16293024/multiple-checkbox-not-checking-after-submitting/16293187#16293187 – 2013-05-02 02:15:25

回答

2

这应该工作:使用implode()将数组构建成字符串。

$queries = implode(',', $_POST['foo']); 

$stmt1 = $conn->prepare("select sum(field) from table where field2 in ($queries)"); 
$stmt1->execute($data1); 

$result1 = $stmt1->fetchAll(); 
print_r(var_dump($va)); 

如果你输入的不是数字:

$queries = implode("','", $_POST['foo']); 

$stmt1 = $conn->prepare("select sum(field) from table where field2 in ('$queries')"); 
$stmt1->execute($data1); 

$result1 = $stmt1->fetchAll(); 
print_r(var_dump($va)); 
+0

你将如何防范SQL注入? ;) – 2013-05-02 02:09:55

+0

OP已经在使用prepare(),假设类提供它。克里斯确实提出了一个很好的观点,确保你使用了准备好的语句,或者在查询数据库时转义输入。 – 2013-05-02 02:10:16

+0

谢谢Set Sail Media,它的工作原理! – ramonovski 2013-05-02 02:13:12

相关问题