foreach循环用于更新多个mysql值

时间:2016-10-03 09:45:39

标签: php mysqli

mysql结果无法更新值。请检查下面的代码以及附图。我需要在单次提交时更新所有表值。我怎样才能做到这一点?

<?php
    if (isset($_POST['submit_update'])) {
      $product_id = $_POST['id'];
      // echo "<pre>";
      // var_dump($product_id);die;
      $p_name = $_POST['p_name'];
      $cat_name = $_POST['cat_name'];
      $stock_ava = $_POST['stock_ava'];
      $max_odr = $_POST['max_odr'];
      $price = $_POST['price'];
      foreach ($product_id as $id) {

        foreach ($p_name as $p_name_value) {
          // echo "<pre>";
          // var_dump($id);
           $q = mysqli_query($conn, "UPDATE products SET product_name='$p_name_value', WHERE product_id='$id'");
           if ($q==1) {
             echo "success";
           }else{
             echo 'fail';
           }
         }
       }
    }
    ?>

this is my tables looks like

2 个答案:

答案 0 :(得分:0)

变化

"UPDATE products SET product_name='$p_name_value', WHERE product_id='$id'

"UPDATE products SET product_name='$p_name_value' WHERE product_id='$id'
设置值后

删除,。 另外,请仔细阅读SQL注入,在这样的查询中传递参数会导致SQL注入。

答案 1 :(得分:0)

  

注意:您的脚本处于SQL注入状态。请尝试使用Mysqli.* / PDOPrepared Statements。因此,这将避免SQL注入的脚本。

在您的Update语句中,您没有遵循mysqli/PDO

中为更新提供的语法

更新语句语法:

UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]
  • 您可以完全更新一个或多个字段。
  • 您可以使用WHERE子句指定任何条件。

注意: - 当您想要更新表中的选定行时,WHERE子句非常有用。

因此,根据语法,您必须更改代码。

<强>替换

$q = mysqli_query($conn, "UPDATE products SET product_name='$p_name_value', WHERE product_id='$id'");

错误: - ,条款

之前的WHERE这是额外的

$q = mysqli_query($conn, "UPDATE products SET product_name='$p_name_value' WHERE product_id='$id'");