2016-04-27 16 views
-1

フォームのデータを使用して配列をデータベースに更新したいとします。以下は私のフォームです:配列をSQLデータベースに更新する

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

そしてここに私のSQLです。私はそれぞれの行を更新する方法を知りたい。今のでそれだけで最初の値に私のcategoryのすべてを更新

$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)); 

また、フィールドリスト 『まず

+0

がよろしいです:私はテーブル

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

を作成するときに値を反復処理する場合次に、あなたがIDを引き出すことができます行のid値を使用してお勧めしたいですどのようなクエリでもabc列名が表示されないためです。 – Poria

+0

未知のフィールドエラーについては、http://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticksを参照してください。 – Barmar

+0

'UPDATE'に' WHERE'節が必要ですすべての行を更新するのではなく、更新する行を指定します。 – Barmar

答えて

0

1)バッククォートは、テーブル名やカラム名ではなく、列の値のためのものです。通常の引用符を使用するか、mysqliのバインディングを利用することをお勧めします。これはSQLインジェクションを防ぐために推奨されます。

2)更新時にWHERE句を使用します。これは完全なコードである

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

『に』エラー「不明な列』 abcのを私に返し、

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

はもっとようにする必要があります:言われて、あなたは非常にVしていることを

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

SQLインジェクションに脆弱です。準備されたステートメントを見てください。

あなたは条件文で複数の行を更新したい場合は、これに似たパターンをたどる:

$sql = " 
    UPDATE `$tableCat` SET 
     category = '$cat', 
     foo = '$foo', 
     bar = '$bar' 
    WHERE baz = '$baz' 
"; 
関連する問題