2017-12-01 11 views
-3

2つの異なるテキストボックスで2つの列を更新しようとしていますが、送信後にデータベースに0の値が表示されます。MySQL更新クエリが失敗しました

HTMLコード:

<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コード: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); 
} 

私は助けを必要としています。私は何が欠けているのか分からない。

+0

$ quant = mysqli_real_escape_string($ link、$ _POST ['Quantity']); $ id1 = mysqli_real_escape_string($ link、$ _POST ['Quantity2']); 'これらは文字列ではありません。 'mysqli_real_escape_string'を使わずに、直接クエリに投稿変数を送ることができます。 – Raghav

+0

@Raghav:mysqli_real_escapeを使わずに試しましたが、うまくいきませんでした。あなたが考え出したものと私が見逃したものは何ですか? – RCV

+0

SQLクエリーをエコーし​​ようとすると、値を含むクエリーが取得され、DB(phpMyadmin)でクエリーが実行されます。 SQLのパースペクティブですべての問題をチェックしてください。 – Raghav

答えて

0

これが機能するかどうかを確認してください。少なくとも、エラー処理に関する詳細を提供する必要があります。まず第一に、あなたのボタンに名前を追加します。

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

その後あなたがこの試すことができます:あなたは、フォームから送信されたPOST変数のすべてを見ているため問題が解決しない場合は

/* 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 
    } 
} 

print_r($_POST) 

実際にはもう一度見てみましょう。実際には、HTMLをPHPスクリプトよりも多くすることができます。あなたはテーブルの中で始まるフォームを持っています - tbodyタグの外側で終わり、その外側で終わる。あなたはHTMLタグを再配置する必要があります - フォーム全体をテーブルの中に置き、試してみてください。

<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

あなたはなぜこれを使ったのですか? "physicalStock =?、transitQuantity =?WHERE id =?" – RCV

+0

今のところPHPスクリプトの変更については忘れてしまいます。 print_r($ _ POST)を試して、HTMLテーブル構造を変更しましたか? – smilango

+0

はい。これは、print_r($ _ POST)= "配列([Quantity] => [Quantity2] => [RCV] => submit)の後に表示されます。" – RCV

関連する問題