0
単純な形式のデータベースエントリを編集したいと思います。 各エントリのIDと名前は固定です。POST後の配列の使用
問題:
- 形式$ farrayを提出した後にのみ、[3]ではない他のレコードの$配列の編集されたデータが含まれません。
- $ farrayには名前とIDは含まれていません(フォームには含まれていません)。クエリのレコードのIDが必要です。
回避策として何が使用できますか?
現在のスクリプト
<?php
$query = mysql_query("SELECT * FROM database");
$array = array();
while($row = mysql_fetch_assoc($query)){
$array[] = $row;
}
if(isset($_POST['send']))
{
$farray = $_POST['farray'];
foreach ($farray as $key => $value) {
echo('UPDATE database SET ' . $key . ' = "' . $value . '"' . ' WHERE id = ' . $farray['id']); //testing
}
}
?>
<form action=" <?=$_SERVER['PHP_SELF']?> " method="POST">
<?php
foreach($array as $key1){
echo $key1["name"] . "<br />";
foreach($key1 as $key => $value){
if ($key != "id" AND $key != "name") {
print $key.
' <input type="text" name="farray['.$key.']" value="'.$value.'"><br /><br />';
}
}
}
?>
<input type="submit" name="send" value="send">
</form>
例$アレイ
Array
(
[0] => Array
(
[id] => 0
[name] => name0
[1] => 1
[2] => 2
[3] => 3
)
[1] => Array
(
[id] => 1
[name] => name1
[1] => 1
[2] => 2
[3] => 3
)
[2] => Array
(
[id] => 2
[name] => name2
[1] => 1
[2] => 2
[3] => 3
)
[3] => Array
(
[id] => 3
[name] => name3
[1] => 1
[2] => 2
[3] => 3
)
)
例$ farray(編集後、フォームを提出)
Array
(
[1] => 10
[2] => 20
[3] => 30
)
データベーステーブルに1,2,3という名前のフィールドが実際にありますか? –
@BrianGottierいいえ、それは例です。 – Remco
私はあなたに答えを残しました。あなたが対処したいと思う重大なセキュリティ問題(SQLインジェクション脆弱性)がありますが、私の答えのポイントはデータの配列を正しく投稿する方法を示すことでした。私の答えは、あなたの実際のコードを修正する方法を明確にする必要があります。 –