次の構造のデータベーステーブルがあります。 id
列が後で追加されます。したがって、id
のセルはすべて空です。データベース列を(垂直方向に)配列で更新する
id | song | album | artist
-----------------------------
| song1 | alb1 | art1
| song2 | alb2 | art2
| song3 | alb3 | art3
| song4 | alb4 | art4
| song5 | alb5 | art5
私はテーブルの値がid
である配列を持っています。私はテーブル(ID列)を配列の値で更新します。例:
$array = [
"C45Rm3fLGn",
"ocIik81up2",
"IcuSn9T77y",
"tJv7AbF53r",
"a9eZ6xYM5Y",
];
これらの項目は一意のランダムな文字列です。
どうすればよいですか?私は配列を反復し、各項目にUPDATE
を使用することを考えています。
$array = [
"C45Rm3fLGn",
"ocIik81up2",
"IcuSn9T77y",
"tJv7AbF53r",
"a9eZ6xYM5Y",
];
$rows = $mysqli->query("SELECT * FROM songs")->fetch_all(MYSQLI_ASSOC);
for ($i = 0; $i < count($array); $i++) {
$row = $rows[$i];
$id = $array[$i];
$mysqli->query("UPDATE songs SET id = '$id' WHERE song = '{$row["song"]}' AND artist = '{$row["artist"]}'");
}
もっと好ましい方法はありますか?
UPDATE:私は自動インクリメントを使用していないと作成されたID列がテーブルの時点で存在しなかった。さて、idカラムを追加しました。 300以上のレコードがあります。レコードのIDは固有のランダムな文字列です。データベースに別のレコードを追加する前に、すべてのレコードにid
の一意のランダムな文字列が必要です。新しいレコードを挿入するときにランダムな文字列を作成し、唯一であるかどうかをidsテーブルに
この段階では、配列を使用してid列を更新するだけで済みます。配列項目は無関係です。
MYSQL_ASSOCは実際にはMYSQLI_ASSOCと同じ値ですが、mysqliを使用する場合は "MYSQLI_ASSOC"を使用してください。 mysql関数は廃止予定とマークされ、新しいバージョンでは削除されます:http://php.net/manual/en/function.mysql-fetch-array.php – Marco
@Marco Fixed。まだ移行中=) – akinuri
@ダウン投票者、この質問に間違いがありますか?何かがあれば、それを改善するのに役立ちます。ダウン投票は本当に役に立たない。これは今のことになっています。ランダムdownvotesを得る。それは私に着き始めている。 – akinuri