web-dev-qa-db-ja.com

致命的なエラー:キャッチされていないエラー:未定義の関数mysql_connect()への呼び出し

私はXAMPPとMySQLサーバーとの簡単な接続を試みますが、データを入力したりデータベースに接続しようとするといつもこのエラーになります。

致命的なエラー:捕捉されなかったエラー:C:\ xampp\htdocs\register.php:22の未定義関数mysql_connect()への呼び出し
スタックトレース:#0 {main}がC:\ xampp\htdocs\register.phpの22行目にスローされています

22行目の例:

$link = mysql_connect($mysql_hostname , $mysql_username);
59
Demeteor

mysql_*関数は、PHP 7で削除されました。

XAMPPにはおそらくPHP 7があります。 2つの選択肢があります: MySQLi_ pdo _

加えて、 here はPDOについてのいいWikiページです。

102
efik

mysqli_connect($mysql_hostname , $mysql_username)の代わりにmysql_connect($mysql_hostname , $mysql_username)を使うことができます。

mysql_*関数は、PHP 7から削除されました。これで、2つの選択肢があります。 MySQLi および _ pdo _

33
user6128099

MySQLiまたはPDOの拡張を使用することをお勧めします。 PHP 5.5.0で廃止され、PHP 7で削除されたため、新しいmysql拡張モジュールを新しい開発に使用することはお勧めできません。

PHPはMySQLに接続するための3つの異なるAPIを提供します。以下に、mysql、mysqli、およびPDO拡張によって提供されるAPIを示します。各コードスニペットは、 "example.com"で実行されているMySQLサーバーへの接続を、ユーザー名 "username"とパスワード "password"を使用して作成します。そして、ユーザに挨拶するためにクエリが実行されます。

例1 3つのMySQL APIの比較

<?php
// mysqli
$mysqli = new mysqli("example.com", "username", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);

// PDO
$pdo = new PDO('mysql:Host=example.com;dbname=database', 'username', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);

// mysql
$c = mysql_connect("example.com", "username", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>

MySQLiとPDOの両方を試して、どのAPI設計を好むのかを調べてください。

読む APIを選ぶ そして どうしてPHPでmysql_ *関数を使うべきでないの?

19
Abhijit Jagtap

他の答えが示すように...あなたのPHPをアップグレードするとき、あなたの古いコードは機能しないほうがいいと決心した人がいます。アップグレードしてください。

一晩でプロジェクトをアップグレードできない場合は

お使いのPHPのバージョンを、動作したバージョンにダウングレードしてください。

または...

https://github.com/dshafik/php7-mysql-shim または https://github.com/dotpointer/mysql-shim などのシム(一種のポリフィル)を使用してからコードのどこかにinclude_once("choice_shim.php");の場所を見つける

あなたが更新する気分になるまで、それはあなたの古いPHPコードを動かし続けます...

7
konzo

mysql_*関数はPHP 7で削除されました。

2つの選択肢があります: MySQLi_ pdo _

以下はMySQLiへのいくつかの一般的な変更の前( - )と後(+)の比較で、作業コードから抜粋したものです。

-if (!$dbLink = mysql_connect($dbHost, $dbUser, $dbPass))
+if (!$dbLink = mysqli_connect($dbHost, $dbUser, $dbPass))

-if (!mysql_select_db($dbName, $dbLink))
+if (!mysqli_select_db($dbLink, $dbName))

-if (!$result = mysql_query($query, $dbLink)) {
+if (!$result = mysqli_query($dbLink, $query)) {

-while ($row = mysql_fetch_array( $result, MYSQL_ASSOC )) {
+while ($row = mysqli_fetch_array( $result, MYSQLI_ASSOC )) {

-mysql_close($dbLink);
+mysqli_close($dbLink);
7
user664833

mysql_関数はPHP 7から削除されました。 MySQLi または _ pdo _ を使用できるようになりました。

MySQLiの例:

mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_dbname);

mysqli_connectリファレンスリンク

2
Dhaval Ajani

あなたが私の場合のようにタイプミスを犯していないことを確認してください

msyql_fetch_assocは mysql であるべきです

1
Hammad Khan

mysql_connect関数(実際にはすべてのmysql_*関数)がPHP 7から削除されたため、このエラーが発生しました。 MySQLi または _ pdo _ を使用できるようになりました。

例:

$mysqli = new mysqli($hostname, $username, $password, $database);
1
rashedcs