2017-12-01 1 views
-3

Ich versuche, 2 Spalten durch zwei verschiedene Textfelder zu aktualisieren, aber nach dem Absenden zeigt es 0 Werte in der Datenbank.MySQL Update Abfrage fehlgeschlagen

HTML-Code:

<form action="update_quantity.php" method="post" class="c-shop-form-1"> 
    <tbody> 
      <?php while ($row = mysqli_fetch_array($query)) 
      { 
       $id2=$row['id']; 

       echo " <tr> 

       <td>{$row['name']} 

       <td></td> 

       <td> 
         <input type='text' class='form-control c-square c-theme' style='width: 90px;' placeholder='Quantity' name='Quantity' id='Quantity'> 
       </td> 

       </td> 
       <td> 
        <input type='text' class='form-control c-square c-theme' style='width: 90px;' placeholder='Quantity' name='Quantity2' id='Quantity2'> 
       </td> 

       </tr>"; 
      }?> 
     </tbody>   
    </table> 
    <button type="submit" value="submit" class="btn c-theme-btn c-btn-square center c-btn-bold c-btn-uppercase">Submit</button> 
</form> 

PHP-Code: upddate_quantity.php

$quant = mysqli_real_escape_string($link, $_POST['Quantity']); 
$id1 = mysqli_real_escape_string($link, $_POST['Quantity2']); 

$sql = "UPDATE vm_elements SET physicalStock='$quant', transitQuantity='$id1' WHERE id='1'"; 
//$res = mysqli_query($link,$sql) or trigger_error(mysqli_error()." in ".$sql); 
if(mysqli_query($link, $sql)) 
{ 
    echo "Records added successfully."; 
} 
else 
{ 
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
} 

Ich brauche Hilfe. Ich verstehe nicht, was fehlt.

+0

'$ quant = mysqli_real_escape_string ($ link, $ _POST ['Quantity']); $ id1 = mysqli_real_escape_string ($ link, $ _POST ['Quantity2']); 'das sind keine Strings oder? Sie können Post-Variablen direkt an die Abfrage senden, ohne mysqli_real_escape_string. – Raghav

+0

@Raghav: Ich habe es ohne mysqli_real_escape versucht, aber es hat nicht funktioniert. Sonst noch etwas, das du herausgefunden hast und das ich vermisst habe? – RCV

+0

Versuchen Sie, SQL-Abfrage zu echoten, erhalten Sie Abfrage mit Werten und führen Sie die Abfrage in DB (phpMyadmin). Überprüfen Sie alles in SQL-Perspektive. – Raghav

Antwort

0

Sehen Sie, ob dies für Sie funktioniert - zumindest sollte es mehr Informationen mit Fehlerbehandlung zur Verfügung stellen. Zunächst einmal einen Namen auf Ihre Schaltfläche hinzu:

<button type="submit" name="RCV" id="RCV" value="submit" class="btn c-theme-btn c-btn-square center c-btn-bold c-btn-uppercase">Submit</button> 

Dann können Sie diese versuchen:

/* Check your mysqli connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

if(isset($_POST['RCV'])) { 

    try { 

     $physStock = mysqli_real_escape_string($link, $_POST['Quantity']); 
     $transQuant = mysqli_real_escape_string($link, $_POST['Quantity2']);  
     $id = 1;   

     $sql = "UPDATE vm_elements SET physicalStock=?, transitQuantity=? WHERE id=?"; 

     if(!($stmt = $link->prepare($sql))) { 
      echo "Prepare failed: (" . $link->errno . ") " . $link->error; 
     } 

     if(!$stmt->bind_param('ssi', $physStock, $transQuant, $id)) { 
      echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error; 
     }  

     if (!$stmt->execute()) { 
      echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error; 
     } else { 
      echo "Records added successfully."; 
     } 

     $stmt->close(); 

    } catch (mysqli_sql_exception $e){ 
     //Handle exception $e 
    } 
} 

Wenn das nicht funktioniert für Sie einen Blick auf all die POST-Variablen haben aus dem Formular gesendet mit:

print_r($_POST) 

Eigentlich wieder - es könnte mehr mit Ihrem HTML als Ihr PHP-Skript zu tun haben. Sie haben die Form, die innerhalb des Tisches anfängt - gerade außerhalb des tbody Anhängers und endet außerhalb davon. Sie sollten Ihre HTML-Tags neu anordnen - legen Sie das gesamte Formular in die Tabelle und probieren Sie es aus.

<tbody> 
     <form action="update_quantity.php" method="post" class="c-shop-form-1"> 
      <?php while ($row = mysqli_fetch_array($query)) { 

        $id2=$row['id']; 

        echo "<tr><td>{$row['name']}</td> 
         <td> 
          <input type='text' class='form-control c-square c-theme' style='width: 90px;' placeholder='Quantity' name='Quantity' id='Quantity'> 
         </td> 

         <td> 
          <input type='text' class='form-control c-square c-theme' style='width: 90px;' placeholder='Quantity' name='Quantity2' id='Quantity2'> 
         </td> 
        </tr>"; 
      }?> 
      <tr> 
       <td></td> 
       <td></td> 
       <td><button type="submit" name="RCV" id="RCV" value="submit" class="btn c-theme-btn c-btn-square center c-btn-bold c-btn-uppercase">Submit</button></td> 
      </tr> 
     </form>  
    </tbody> 
+0

Kannst du mir sagen, warum hast du das benutzt? "physicalStock = ?, transitQuantity =? WHERE id =?" – RCV

+0

Vergessen Sie die Änderungen im PHP-Skript für jetzt. Haben Sie versucht, print_r ($ _ POST) und ändern Sie die HTML-Tabellenstruktur? – smilango

+0

ja. das bekomme ich nach print_r ($ _ POST) = "Array ([Menge] => [Menge2] => [RCV] => abschicken)" – RCV