2016-10-03 106 views
-3

mysql結果無法更新值。請檢查下面的代碼和附圖。我需要在單次提交時更新所有表格的值。我怎樣才能做到這一點?foreach循環更新多個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

+0

如果測試的狀態在這裏,在這,是額外的WHERE條款

之前所有'mysqli_query()'調用和ec ho'mysqli_error($ con);'你會看到你的編譯錯誤。然後你可以修復你自己的TYPO的 – RiggsFolly

+0

你的腳本存在[SQL注入攻擊]的風險(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) 有看看發生了什麼[小巴比表](http://bobby-tables.com/)即使 [如果你逃避投入,它不安全!](http://stackoverflow.com/questions/5741187/ sql -injection-that-gets-around-mysql-real-escape-string) 使用[prepared parameterized statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

回答

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注入。

0

Note: Your Script is at SQL Injection. Please Try to use Mysqli.*/PDO along with Prepared Statements . Hence that will avoid the scripts from SQL Injections.

在你的更新語句中,沒有按照其在mysqli/PDO

UPDATE語句的語法提供了更新的語法:

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

注: - 在哪裏,當你想在一個更新表中選擇的行子句是非常有用的。

因此根據語法你必須改變你的代碼。

替換:

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

錯誤: - :

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