2016-10-03 6 views
-3

mysql ergebnisse erhalten fehlgeschlagen, um werte zu aktualisieren. Bitte überprüfen Sie die Codes unten und auch das beigefügte Bild. Ich muss alle Tabellenwerte bei einer einzigen Einreichung aktualisieren. wie kann ich das machen?foreach loop for update mehrere mysql-werte

<?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

Wenn Sie den Status Test alle 'mysqli_query()' Aufrufe und ec ho 'mysqli_error ($ con);' Sie werden Ihre Kompilierungsfehler angezeigt bekommen. Dann können Sie Ihre eigenen TYPO's reparieren – RiggsFolly

+0

Ihr Skript ist in Gefahr von [SQL Injection Attack] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) Haben Ein Blick auf das, was [Little Bobby Tables] passiert ist (http://bobby-tables.com/) Sogar [Wenn Sie Eingaben entgehen, ist es nicht sicher!] (http://stackoverflow.com/questions/5741187/ sql-injection-that-around-mysql-real-escape-string) Verwenden Sie [vorbereitete parametrisierte Anweisungen] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly

Antwort

0

Änderung

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

zu

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

, entfernen, nachdem der Wert. Darüber hinaus lesen Sie bitte über SQL-Injection, die Übergabe von Parametern in der Abfrage, wie dies zu SQL-Injektion führt.

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.

In Ihrer Update-Anweisung Sie befolgt haben nicht die Syntax, die für das Update zur Verfügung gestellt wird, in mysqli/PDO

Update-Anweisung Syntax:

UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause] 
  • Sie aktualisieren können eine oder mehr Feld insgesamt.
  • Sie können jede Bedingung mithilfe der WHERE-Klausel angeben.

Hinweis: - Die WHERE-Klausel ist sehr nützlich, wenn Sie ausgewählte Zeilen in einer Tabelle aktualisieren möchten.

Daher müssen Sie gemäß der Syntax Ihren Code ändern.

ersetzen:

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

Fehler: - Hier in diesem , ist extra vor dem WHERE Klausel

An:

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