このコードが実行できないんですけど何が原因だと思いますか?\u0026lt;?php$connect = mysql_connect(\u0026quot;localhost\u0026quot;,\u0026quot;root\u0026quot;,\u0026quot;\u0026quot;);mysql_query(\u0026quot;SET NAMES utf8\u0026quot;,$connect);mysql_db_query( \u0026quot;test\u0026quot;, \u0026quot;select * from tweet_tbl\u0026quot; );mysql_close($connect); ?\u0026gt;

MySQL

1件の回答

回答を書く

1248917

2026-03-29 09:00

+ フォロー

こんばんは



# 原因の整理



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;





# 移行のポイント



・拡張の選択:
MySQLiPDO に移行する。新規なら PDO も有力。

・文字コード: 可能なら MySQL 側の照合順序(例: utf8mb4_general_ci)とテーブル/接続の charset を統一。

・権限管理: 専用ユーザーを作成し、必要最小限の権限に限定。

・例外/エラー: 失敗時に即座に原因が分かるよう、例外または詳細なログ

を出す。

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有