だから私はこの基本的なhtmlフォームを持っています。私の目標は、このフォームに送信された値をmysqlテーブルに渡すことです。
<form action="?action=settings" method="post">
<ul>
<li>
<label for="settingValue[1]">Setting 1:</label>
<input type="text" name="settingValue[1]" id="setting1" required />
</li>
<li>
<label for="settingValue[2]">Setting 2:</label><br>
<input checked type="radio" name="settingValue[2]" value="1" />On<br>
<input type="radio" name="settingValue[2]" value="0" />Off
</li>
<li>
<input type="submit" name="saveChanges" value="Save Changes" />
</li>
</ul>
</form>
私のmysqlテーブルには3つの列(id、settingName、settingValue)しかないので、値を「settingValue」列に格納することにより、このフォーム(この場合は行1と2)を使用してテーブル内の複数のレコードを更新したいと思います。
いくつかの調査の結果、これを行うための最良の方法は、配列を投稿することであることがわかりました(これは、上記で試みたものです)。次に、foreachループを使用して配列を実行し、テーブルを更新します。
私の主な問題は、配列の使い方を理解することだと思います。レコードを更新する必要があるため、新しいレコードを作成するのではありません。対応するレコードを更新できるように、IDも保持する必要があります。
何時間もグーグルした後、私の最善の推測はこれを行うことでした:
if ( isset( $_POST['saveChanges'])) {
foreach($_POST['settingValue'] as $key => $settingValue ) {
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$conn->exec("UPDATE settings SET settingValue=$settingValue WHERE id=$key");
$conn = null;
}
しかし、それは結果を生み出していません。