sql >> データベース >  >> RDS >> Mysql

MySQLデータベースからデータを更新できません

    2つの異なる変数を使用しています:

    $ parcelno UPDATEクエリで

    および$parcel =$ _REQUEST ['parcel'];

    両方の変数は必須 マッチ。そうでない場合、クエリ全体が失敗します。

    <?php を開いた直後に、ファイルの先頭にエラーレポートを追加します タグ。実動前のテスト中に役立ちます。

    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    

    現在のコードは、SQLインジェクションに公開されています。 準備されたステートメントを使用します 、または PDO 準備されたステートメント

    さらに、 nkchandraを引用します コメントで+1 (可能であれば):

    「あなたの質問には無関係ですが、参考までに、PHPMyAdminはデータベースではなく、あなたの場合はmysqlのようなデータベースと対話するためのツールです」

    編集: コメントを読んだ後、 mysqli_<に切り替える必要があるようです。 / code> 関数。

    これは、プリペアドステートメントの使用法を学ぶ前の簡単な修正です。

    <?php
    
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    
    
    $DB_HOST = "xxx"; // replace with yours
    $DB_USER = "xxx"; // replace with yours
    $DB_PASS = "xxx"; // replace with yours
    $DB_NAME = "xxx"; // replace with yours
    
    
    $conn = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
    if($conn->connect_errno > 0) {
      die('Connection failed [' . $conn->connect_error . ']');
    }
    
    $id= "";
    $parcelno = "";
    $items = "";
    if(isset($_REQUEST['id'])){ 
    $id= mysqli_real_escape_string($conn,$_REQUEST['id']); }
    if(isset($_REQUEST['parcel'])){ 
    $parcelno = mysqli_real_escape_string($conn,$_REQUEST['parcel']); }
    if(isset($_REQUEST['items'])){ 
    $items = mysqli_real_escape_string($conn,$_REQUEST['items']); }
    
    
    $sql="UPDATE parcel SET parcelno='$parcelno', items='$items' where id='$id'";
    $result=mysqli_query($conn,$sql) or die(mysqli_error()."\n");
    
    if (!$result)
        {
            throw new Exception($conn->error);
        }
    
    else { echo "Success"; }
    
    mysqli_close($conn); // close the connection
    

    さらに、 r3wt'sによる コメント:次も使用できます:

    $result= $conn->query($sql) or die(mysqli_error()."\n");
    

    の代わりに
    $result=mysqli_query($conn,$sql) or die(mysqli_error()."\n");
    


    1. SQLSTATE [HY000]:一般的なエラー:1835LARAVELの通信パケットの形式が正しくありません

    2. MySql、日付と時刻の列をタイムスタンプに結合

    3. 再起動後にシェルスクリプトを続行するにはどうすればよいですか?

    4. TSQLを使用して、データベース内のすべてのテーブルをどのように切り捨てますか?