2016-04-27 9 views
-1

Ich möchte mein Array in meine Datenbank mit den Daten aus dem Formular aktualisieren. Unten ist mein Formular:Update-Array in SQL-Datenbank

$query = "SELECT category FROM `$tablename`"; 
$result2 = mysqli_query($link, $query); 


$rowcount = mysqli_num_rows($result2); 
if ($rowcount > 0) { 
    ?> 

    <div class="center_content"> 

     <div id="right_wrap"> 
      <div id="right_content">    


       <ul id="tabsmenu" class="tabsmenu"> 
        <li class="active"><a href="#tab1">Update Category</a></li> 
        <li class=""><a href="#tab2">Add Category</a></li> 
        <li class=""><a href="#tab3">View All Category</a></li> 

       </ul> 
       <div id="tab1" class="tabcontent"> 
        <div style="margin:0 auto" align=center> 


        </div> 
        <div class="form"> 
         <form action="editCatB.php" method="post"> 


          <div class="form_row"> 
           <label>Outlet Name:</label> 
           <input type="text" class="form_input" name="tablename" value="<?php echo $name; ?>"readonly/> 
          </div> 

          <div class ="form_row"> 
           <label>Outlet Category/Stalls :</label> 
          </div> 
          <div class="form_row"> 

           <div class="input_fields_wrap"> 
            <?php 
            mysqli_data_seek($result2, 0); 

            while ($row2 = mysqli_fetch_array($result2, MYSQLI_ASSOC)) { 
             ?>    

             <div><input class="form_input" type="text" name="mytext[]"value="<?php echo $row2['category']; ?> 
                "></div> 
             <?php 
             } 
            } 
            ?> 

Und hier ist mein sql. Ich möchte wissen, wie man die jeweilige Zeile aktualisiert. Weil es aktualisieren gerade jetzt gerade alle meine category in den ersten Wert

$tableName = $_POST['tablename']; 
$values = $_POST['mytext']; 

$tableCat = $tableName . "categoryList"; 

$newString = preg_replace('/\s+/', '', $values); 

for ($i = 0; $i < count($newString); $i++) { 
    $cat = $newString[$i]; 
    $sql = "UPDATE `$tableCat` SET category = `$cat`"; 

    $result = mysqli_query($link, $sql) or die(mysqli_error($link)); 

Es gibt mir auch mit dem Fehler ‚Unknown column 'abc' in 'field list'

+0

Sind Sie sicher, dass der vollständige Code weil ich in keiner Ihrer Abfragen einen abc-Spaltennamen sehe. – Poria

+0

Für den unbekannten Feldfehler, siehe http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks – Barmar

+0

Sie benötigen eine 'WHERE'-Klausel in der 'UPDATE' um zu sagen, welche Zeilen aktualisiert werden sollen, anstatt alle Zeilen zu aktualisieren. – Barmar

Antwort

0

1) sind für Backticks Tabellennamen und Spaltennamen, nicht Spaltenwerte:

Wenn Sie mehrere Zeilen mit conditionals aktualisieren möchten, würden Sie ein ähnliches Muster wie diese folgen. Sie sollten normale Anführungszeichen verwenden oder die Bindungen von mysqli nutzen, was zur Vermeidung von SQL-Injection empfohlen wird.

2) Sie möchten beim Aktualisieren eine WHERE-Klausel verwenden. Ich würde vorschlagen, dass der ID-Wert für die Zeile zu verwenden, wenn Sie die Tabelle erstellen

<div><input class="form_input" type="text" name="mytext[<?php echo $row2['id']?>]" value="<?php echo $row2['category']; ?>"></div> 

Dann, wenn Sie durch die Werte durchlaufen, können Sie die ID herausziehen:

foreach($newString as $id=>$cat) { 
    $sql = "UPDATE `$tableCat` SET category = '$cat' WHERE id = '$id'"; 

    $result = mysqli_query($link, $sql) or die(mysqli_error($link)); 
} 
0

Zuerst

$sql = "UPDATE `$tableCat` SET category = `$cat`"; 

Sollten mehr wie:

$sql = "UPDATE `$tableCat` SET category = '$cat'"; 

Dass gesagt wird, sind Sie extrem v unbrauchbar für SQL-Injektion. Untersuchen Sie vorbereitete Aussagen.

$sql = " 
    UPDATE `$tableCat` SET 
     category = '$cat', 
     foo = '$foo', 
     bar = '$bar' 
    WHERE baz = '$baz' 
";