こんばんは
# 原因の整理
・MySQL拡張が廃止されている
PHP 7以降では MySQL_* 関数が完全に削除されています。コードは古い MySQL_connect / MySQL_query / MySQL_db_query を使っているため、現在の環境では動きません。
・データベース選択が不適切 MySQL_db_query(\u0026quot;test\u0026quot;, \u0026quot;...\u0026quot;) は古い関数で、一般的には MySQL_select_db(\u0026quot;test\u0026quot;, $connect) の後に MySQL_query(...) を使います。現行の MySQLi では MySQLi_select_db($connect, \u0026quot;test\u0026quot;) を用います。
・接続リソースの渡し方が不統一 MySQL_query(\u0026quot;SET NAMES utf8\u0026quot;, $connect) のように接続リソースを付けている箇所と、付けていない箇所が混在しています。一貫して接続ハンドルを使う必要があります。
・エラーハンドリングが無い
失敗時の原因が分からないため、接続・DB選択・クエリの各段階でエラーチェックを入れるべきです。
・セキュリティ上の懸念 root ユーザー、パスワード空は危険です。アプリ用の限定権限ユーザーを使ってください。
# 推奨される修正(MySQLi版)php
\u0026lt;?php
// 1. 接続(ユーザー名・パスワード・ホストを環境に合わせて設定)
$connect = MySQLi_connect(\u0026quot;localhost\u0026quot;, \u0026quot;app_user\u0026quot;, \u0026quot;secure_passWord\u0026quot;, \u0026quot;test\u0026quot;);
if (!$connect) {
die(\u0026quot;DB接続失敗: \u0026quot; . MySQLi_connect_error());
}
// 2. 文字コードをUTF-8に設定
if (!MySQLi_set_charset($connect, \u0026quot;utf8\u0026quot;)) {
die(\u0026quot;文字コード設定失敗: \u0026quot; . MySQLi_error($connect));
}
// 3. クエリ実行(エラーチェック)
$sql = \u0026quot;SELECT * FROM tweet_tbl\u0026quot;;
$result = MySQLi_query($connect, $sql);
if (!$result) {
die(\u0026quot;クエリ失敗: \u0026quot; . MySQLi_error($connect));
}
// 4. 結果の処理(例: ループで出力)
while ($row = MySQLi_fetch_assoc($result)) {
echo htmlspecialchars($row['column_name'] ?? '', ENT_QUOTES, 'UTF-8') . \u0026quot;\u0026lt;br\u0026gt;\u0026quot;;
}
// 5. 後片付け
MySQLi_free_result($result);
MySQLi_close($connect);
?\u0026gt;MySQLi
# 移行のポイント
・拡張の選択: か PDO に移行する。新規なら PDO も有力。
・文字コード: 可能なら MySQL 側の照合順序(例: utf8mb4_general_ci)とテーブル/接続の charset を統一。
・権限管理: 専用ユーザーを作成し、必要最小限の権限に限定。
・例外/エラー: 失敗時に即座に原因が分かるよう、例外または詳細なログ
を出す。