「プロファイル」というテーブルがあります。このテーブルには「user_id」という名前の列があり、名前を「username」に、タイプを INT(11) から Varchar(255) に変更しました。ただし、この列の内容は依然として数値 ID です。
これらの ID は、「users」と呼ばれる別のテーブルに対応しています。そのテーブルには、「user_id」と「username」というフィールドがあります。「プロファイル」テーブルの各行について、最初にユーザー名フィールドの ID を確認し、ユーザー テーブルを検索してその ID に対応するユーザー名を取得し、プロファイル テーブルのユーザー名の値を更新する必要があります。適切なユーザー名で。
プロファイル テーブル:
username | blah blah...
------------------------
1 | ...
ユーザー テーブル:
user_id | username
------------------------
1 | Joe
プロファイル テーブルのユーザー名フィールドの値を「Joe」に更新する必要があります。
私はこのphpスクリプトを思いつきましたが、何らかの理由でたった4つのレコードを更新しただけで動作しなくなりました:
$sql = 'SELECT username FROM profiles';
$query = mysql_query($sql);
while($row = mysql_fetch_assoc($query)) {
$id = $row['username'];
$sql = 'SELECT username FROM users WHERE user_id = '. $id;
$query = mysql_query($sql);
while($row = mysql_fetch_assoc($query)) {
$sql = "UPDATE profiles SET username = '".$row['username']."' WHERE username = $id";
$query = mysql_query($sql);
if(!$query) {
echo 'error!';
}
}
}
私のスクリプトは最初からそれほど効率的ではありませんが、テーブルには 50,000 レコードしかないため、それほど大きな問題ではありません。とにかく、mysqlから直接これを行う方法は何ですか?