PHP で作成した送信スクリプトがあります。これは、私たちの組織で複数の調査で使用されています。調査は他のユーザーによって作成されます。スクリプトに送信すると、PHP はデータを MySQL の適切なテーブルに配置します。私が時々遭遇するエラーは、ユーザーがフォームを更新することです。フィールドを追加するか、入力の名前を変更しますが、スクリプトはすべてが同じであると想定しているため、それを考慮しません。そのため、新しいフィールドが追加されたときに対応できるようにする方法を見つけようとしています。ここに私が持っているものがあります:
if( mysql_num_rows( mysql_query("SHOW TABLES LIKE '".$survey."'"))){
echo "table exists";
$sql = "SELECT * FROM " . $survey . ";";
$result = mysql_query($sql)
or die(mysql_error());
$i=0;
while($row = mysql_fetch_row($result));{
echo $row[0];
foreach($_POST as $k => $v){
$i++;
if($k != $row[$i]){
$query = "ALTER TABLE " . $survey . " ADD " . $k . " VARCHAR(100);";
mysql_query($query)
or die(mysql_error());
}
}
}
}
私は JS で while ループを行うことに慣れているので、ここで i を使用しても機能するかどうかはわかりません (実際、機能しないことはわかっています... 機能しないため...)。私が言おうとしているのは、キーが現在のフィールド名と一致しない場合は、それをテーブルに追加するということです。$row を正しく返すにはどうすればよいですか?
スクリプトに送信すると、「重複する列名 'V4'」と表示されます
echo $row[0] がありますが、1 が返されます。これは、最初のレコードの主キーで使用される int です。