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

MYSQLは私のデータベースに情報を追加していません

    無効な挿入構文がありますこれは有効な構文です

    INSERT INTO customers (field1, field2) VALUES (val1, val2);
    

    ドキュメントを参照

    また、深刻なSQLインジェクションの脆弱性があります。こちら<をご覧ください。 / a> それについての助けを求めて

    パラメータ化されたクエリとプリペアドステートメントを使用することをお勧めします...この SO POST それをうまくカバーします

    編集:

    リンクを提供するだけでなく、ここでの答えはサンプルだけです。 あなたがすべきことの

    $mysqli = new mysqli("server", "username", "password", "database_name");
    
    if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
    }
    $qry = $mysqli->prepare('INSERT INTO customers (name, phone, type, section, email, address, business, service, notes) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)');
    $qry->bind_param('s', $name, $phone_num, $sec_num, $email, $cus_type, $business, $address, $service, $notes);
    
    // can do it in one statement rather than multiples..
    //$qry->bind_param('s', $name);
    //$qry->bind_param('s', $phone_num);
    //$qry->bind_param('s', $sec_num);
    //$qry->bind_param('s', $email);
    //$qry->bind_param('s', $cus_type);
    //$qry->bind_param('s', $business);
    //$qry->bind_param('s', $address);
    //$qry->bind_param('s', $service);
    //$qry->bind_param('s', $notes);
    
    $qry->execute();
    $qry->close();
    

    EDIT2:

    プログラミングに慣れていない必要があります。if()ステートメントは常に実行されます...つまり、常にデータベースに挿入することになります。これが理由です。

    if ($cus_type = $_POST['Corporate']){ ここで、$cus_typeは他の別名$_POST['cusType']と同じです。 しかし、ifステートメントでは、それを$ _POST ['Corporate'] ...に割り当てています。これは、真のステートメントであるため、常に実行されます。これは、ifステートメントが論理的に実行される方法です。

    if(boolean statement){
        //executes when true
    };
    
    if(true){
        //always executes
    };
    
    if('a' == 'b'){
        //will not execute
    };
    
    $a = 'a';
    $b = 'b';
    if($a == $b){
        //will not execute
    };
    
    if($a = $b){
        //will always execute because its assigning the value which is a boolean true statement.
    };
    


    1. テーブルから複数のIDを選択します

    2. Oracle SQL Developer:失敗-テストに失敗しました:ネットワークアダプタが接続を確立できませんでしたか?

    3. ダウンロードするファイルがない場合にSSISFTPタスクが失敗しないようにするにはどうすればよいですか?

    4. アセットからdata\data\にコピーされたデータベースのDatabaseHelperにアクセスしようとしたときのnullポインター例外