2016-01-03 28 views
38

XAMPPとMySQLサーバーとの単純な接続を試みていますが、データを入力しようとしたりデータベースに接続しようとすると、ライン22の致命的なエラー:未知のエラー:未定義の関数を呼び出すmysql_connect()

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\register.php:22
Stack trace: #0 {main} thrown in C:\xampp\htdocs\register.php on line 22

例:

$link = mysql_connect($mysql_hostname , $mysql_username); 
+1

。 –

+7

[**新しいコードでは 'mysql_ *'関数を使わないでください**](http://stackoverflow.com/q/12859942)。それらはもはや維持されておらず(正式に推奨されていません)(https://wiki.php.net/rfc/mysql_deprecation)。 [** red box **](http://uk.php.net/manual/en/function.mysql-connect.php)を参照してください。代わりに[* prepared statements *](http://en.wikipedia.org/wiki/Prepared_statement)について学び、[PDO](http://php.net/pdo)または[MySQLi](http:// php.net/mysqli)。 – Rizier123

+0

Demeteor

答えて

62

mysql_*機能はPHP 7.

おそらく、XAMPPでPHP 7を持っているに削除されました。今度はMySQLiPDOという2つの選択肢があります。

さらに、hereは、PDOに関する素晴らしいwikiページです。

20

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

mysql_* PHP 7の機能が削除されました。MySQLiPDOという2つの選択肢があります。

+0

その他の変更ただし、必要に応じてされる可能性が高い。 – ceejayoz

+1

のUbuntu 16.04で、これは' php7.0-mysql'パッケージを必要としていた。同様に@ ceejayozが必要実際にいくつかのAPIの変更があり、名前だけ機能しないことが、その引数の順番に、と言います。非常にイライラ。 –

+0

ラフ1は、それは、私はPDO接続 – adeguk

1

mysql_ PHP 7から機能が削除されました。MySQLiまたはPDOを使用できるようになりました。

MySQLiの例:

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

mysqli_connect reference link

14

MySQLiをまたはPDO拡張のいずれかを使用することをお勧めします。 PHP 5.5.0では廃止され、PHP 7では廃止されたため、新しい開発に古いmysql拡張を使用することはお勧めしません。

PHPはMySQLに接続する3つの異なるAPIを提供しています。以下に、mysql、mysqli、およびPDOの拡張機能によって提供されるAPIを示します。各コードスニペットは、 "example.com"上で動作するMySQLサーバーへの接続を、ユーザー名 "username"とパスワード "password"を使用して作成します。また、ユーザーを迎えるためにクエリが実行されます。 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の設計を見つける提案を比較

例#1。

mysql_connect機能(実際には、すべてのmysql_*機能が)あなたは今MySQLiPDOを使用することができますPHP 7から削除されたので。あなたはそのエラーを得読むChoosing an APIWhy shouldn't I use mysql_* functions in PHP?

-1

例:MySQLiPDO

$mysqli = new mysqli($hostname, $username, $password, $database); 
-2

mysql_*機能は、あなたが今、二つの選択肢を持っているPHP 7に

を削除されました。

され、次の前に( - )とストレート作業コードから取り出し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); 
+0

で私のコードを最適化し、少なくともまで、私のために働いた理由ダウン投票? – user664833

関連する問題