【问题标题】:Need to execute a sql query with variables from a foreach loop需要使用来自 foreach 循环的变量执行 sql 查询
【发布时间】:2019-07-11 06:40:49
【问题描述】:

所以我需要在 foreach 循环中运行我的 sql 查询,但是,假设 foreach 循环中有两个变量,该查询只使用第一个变量执行两次迭代,而不是执行第一个和第二个变量.

我的代码

$sql = "SELECT * FROM users WHERE idUsers = '$selected';";

$result = mysqli_query($conn, $sql);
if($row = mysqli_fetch_assoc($result))
{
    foreach($_POST['order-check'] as $check) 
    {
        $sql2 = "UPDATE order_table SET order_status = 'Processing', assigned_vendor = '$selectedvendor' WHERE order_id = '$check';";
        $result2 = mysqli_query($conn, $sql2);
        exit();
    }
}
else{
    echo "failed";
    exit();
}

这里,$selected 是另一个页面的 POST 变量

【问题讨论】:

  • 你有 exit() 在那里,所以它只会运行一次循环。您也只在选择查询中获取一行,同时循环 $_POST['order-check'] 直到结束(第一次迭代后的 exit 除外)。
  • 您的第二个查询不使用来自$row 的任何内容。为什么要在循环中这样做?
  • 不要把解决方案放在问题中。
  • @Barmar 我应该使用if($result) 吗?
  • 没关系,我以为你在做while ($row = mysqli_fetch_assoc($result))

标签: php mysql sql foreach


【解决方案1】:

正如 Qirel 所提到的,从您的 foreach 语句中删除“exit()”。 另外,请确保在插入数据库之前清理任何 POST 或 GET 变量:)

如果您想遍历所有 $_POST 变量,您的语句应该如下所示

  foreach($_POST['order-check'] as $check) 
        {
            $sql2 = "UPDATE order_table SET order_status = 'Processing', assigned_vendor = '$selectedvendor' WHERE order_id = '$check';";
            $result2 = mysqli_query($conn, $sql2);
            //exit();
        }

【讨论】:

    猜你喜欢
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    相关资源
    最近更新 更多