MySQL データベースで簡単な操作を実行しようとしています。連絡先はfirst_name
、列last_name
が空のときに呼び出される列に完全な名前を持っています。
first_name
したがって、列にあるものを取り出して、最初に出現する空白で分割し、最初の部分をfirst_name
列に、2 番目の部分を列に配置したいと考えていlast_name
ます。
次のコードを使用していますが、機能していません。
$connection = new mysqli(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME, DATABASE_PORT);
$statement = $connection->prepare("SELECT id, first_name FROM contacts");
$statement->execute();
$statement->bind_result($row->id, $row->firstName);
while ($statement->fetch()) {
$names = separateNames($row->firstName);
$connection->query('UPDATE contacts SET first_name="'.$names[0].'", last_name="'.$names[1].'" WHERE id='.$row->id);
}
$statement->free_result();
$statement->close();
$connection->close();
$connection->query
ステートメントを開いたまま、を使用できますか?
よろしくお願いします。
アップデート
$connection->query(...)
戻りFALSE
、次のエラーが表示されます。
PHP Fatal error: Uncaught exception 'Exception' with message 'MySQL Error - 2014 : Commands out of sync; you can't run this command now'
コードを次のように変更して動作しました。
$connection = new mysqli(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME, DATABASE_PORT);
$result = $connection->query("SELECT id, first_name FROM contacts");
while ($row = $result->fetch_row()) {
$names = separateNames($row[1]);
$connection->query('UPDATE contacts SET first_name="'.$names[0].'", last_name="'.$names[1].'" WHERE id='.$row[0]);
}
$connection->close();