私は2つのデータベース、SYSTEMとCUSTOMERを持っています。 SYSTEMには、ユーザー名を持つstafflistテーブルがあります。 CUSTOMERの各テーブルは顧客名です。ここでPHP/MYSQLネストされたforeachを持つ列を追加
私は何をしようとしていますがお客様、 foreachの 'system.stafflistにユーザー名' でforeachのテーブルで、 ALTER TABLE '$表には' '$ユーザ名' を追加
は私のコードです:
$sql3 = "SELECT username from system.stafflist";
$result3 = $conn->query($sql3);
$sales = array();
while($row3 = $result3->fetch_array()) {
$sales[]="x".$row3['username'];
}
$sql = "SHOW TABLES from customer";
$result = $conn2->query($sql);
$table = array();
$i=0;
while($row = $result->fetch_array()) {
$table[] = $row[$i];
}
var_dump ($table);
var_dump ($sales);
foreach ($table as $table){
foreach ($sales as $sales){
$sql2 = "ALTER TABLE $table ADD $sales VARCHAR(12);";
if ($conn2->query($sql2) === TRUE) {} else {echo "Error: " . $sql2 . "<br>" . $conn2->error;}
}
}
のvar_dumpは2つの適切な配列を示しています。
array (size=62)
0 => string 'rita' (length=4)
1 => string 'sadk' (length=4)
2 => string 'sand' (length=4)
3 => string 'sany' (length=4)
4 => string 'sbdk' (length=4)
5 => string 'sdkg' (length=4)
array (size=54)
0 => string '0007' (length=4)
1 => string '0006' (length=4)
2 => string '0005' (length=4)
3 => string '0004' (length=4)
4 => string '0003' (length=4)
をしかし、2個のエラーがあります。
エラー:ALTER TABLE rita ADD x2304 VARCHAR(12); 重複する列名「x2304」
そして
Warning: Invalid argument supplied for foreach() <--the $sales foreach
私は$販売foreachループをコメントアウトし、代わりに$販売の「ABC」に私のALTERステートメントの列名を変更する場合、私は正常に「ABCを追加することができます'を各テーブルに追加します。
$ sales foreachがエラーを引き起こす原因は何ですか?あなたは
foreach ($sales as $sales)
あなたの配列をoverwrtingているforeachループで
私は私のコードは、人々におかしい、私は良いコーダであることにノークレームを取らない場合は驚いて、それを与えていないだろう私の最高と私が行くように学ぶ。あなたは、$ salesとしての$ salesと$ tableとしての$ tableについて、これをすべて調整した後、正しく機能しました。奇妙なことは、$ tableループは私に問題を与えてくれないということです。とにかくそれは働いています。また、追加情報に感謝します。 – Nama
あなたは良いスタートを切っています.PHP.netは素晴らしい情報源です。私はあなたが内部データを使用しているが、ユーザー入力からデータベースにジャンプする前に準備されたステートメントについて学ぶことが不可欠であるため、SQLインジェクションについて説明するのは大変です。残りの部分については、http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq=1こちらをご覧ください。 :)あなたが質問を投稿した方法は、私の意見では、うまく形成されました。ブラボー! –