我有2个阵列:
$gather = $_POST['gather'];
$client_id = $_POST['client_id'];
结果:
Array1 ( [0] => hashtag [1] => followers [2] => latitude [3] => followers [4] => hashtag )
Array2 ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
我想使用这样的foreach语句:
foreach($gather as $value)
{
$update = mysql_query("UPDATE gather set gather_choice = '".$value."' where client_id = '".$client_id[]."' ")or die(mysql_error());
}
但我的每个foreach语句都需要使用array1 [0]和array2 [0] ..然后是array1 [1]和array2 [1]
在示例中,我不知道如何使用'“。$ client_id []。”'来获取我的sql查询的正确值...
感谢
答案 0 :(得分:1)
您需要将键分配给foreach语句中的变量。
foreach($gather as $key => $value) {
}
然后你会使用$client_id[$key]
。您也可以使用等同于$gather[$key]
的{{1}}。
我不会复制您的SQL语句,因为它是危险的并且受SQL注入的影响,我强烈建议您查看PDO或MySQLi并使用预准备语句。您不应该直接在查询中使用用户输入($value
)。
答案 1 :(得分:1)
假设两个数组的大小相同,您可以使用以下内容:
$gather = $_POST['gather'];
$client_id = $_POST['client_id'];
$total = count($gather); // count how many elements you have
for ($i = 0; $i < $total; $i++) // and use a for loop
{
$update = mysql_query("UPDATE gather set gather_choice = '". $gather[$i] ."' where client_id = '". $client_id[$i] ."' ") or die(mysql_error());
}
或者,你可以使用这样的东西,并保留foreach()
循环:
$client_id = array_reverse($client_id); // we reverse the array so that, we can use array_pop on the array, and still get elements in the original order.
foreach($gather as $value)
{
$update = mysql_query("UPDATE gather set gather_choice = '". $value ."' where client_id = '". array_pop($client_id) ."' ") or die(mysql_error());
}
文档:
修改强>
正如@Devon所说,您的查询容易受到攻击。不推荐使用mysql_*
。请改用mysqli_*
或PDO
。
请同时查看此问题的答案:Two arrays in foreach loop
答案 2 :(得分:0)
只需使用下面的块
foreach($gather as $key=>$value)
{
$update = mysql_query("UPDATE gather set gather_choice = '$value' where client_id = '$client_id[$key]' ")or die(mysql_error());
}
另外你要考虑改成mysqli,非常简单和安全,而不是mysql _