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

foreachループを使用して複数のフィールドを挿入します

    $_POSTでforeachを実行しています 名前/年齢の配列ではなく。次のように、名前または年齢の配列でforeachを実行する必要があります:

    if (
       !empty($_POST['name']) && !empty($_POST['age']) &&
       is_array($_POST['name']) && is_array($_POST['age']) &&
       count($_POST['name']) === count($_POST['age'])
    ) {
        $name_array = $_POST['name'];
        $age_array = $_POST['age'];
        for ($i = 0; $i < count($name_array); $i++) {
    
            $name = mysql_real_escape_string($name_array[$i]);
            $age = mysql_real_escape_string($age_array[$i]);
    
            mysql_query("INSERT INTO users (name, age) VALUES ('$name', '$age')");
        } 
    }
    

    また、現在SQLインジェクションの影響を受けやすいため、名前/年齢の文字列をエスケープする手順を追加しました。

    また、各レコードを個別に挿入するのではなく、DBに1つの一括挿入を行うことを強くお勧めします(実装はあなたに任せます)。このアプローチは、ほとんどの場合、パフォーマンスの観点から推奨されます。

    最後に、あなたは本当にmysql_*を使うべきではありません 非推奨として機能します。 mysqliまたはPDOへの変更を検討してください。



    1. UTF-8:データベースでは正しく表示されますが、utf-8文字セットにもかかわらずHTMLでは表示されません

    2. このクエリはSQLインジェクションから安全ですか?

    3. OracleCloudInfrastructureのコンパートメントについて知っておくべき7つのこと

    4. AndroidStudioにMySQLJDBCドライバーを作成する方法