web-dev-qa-db-ja.com

非推奨:mysql_connect()

私はこの警告を受けていますが、それでもプログラムは正しく実行されます。

MySQLコードは私にPHPでメッセージを表示しています:

廃止予定:mysql_connect():mysql拡張モジュールは廃止予定で、将来削除される予定です。代わりに2行目のC:\ xampp\htdocs\task\media\new\connect.inc.phpでmysqliまたはPDOを使用してください。

私のconnect.inc.phpページは

<?php
  $connect = mysql_connect('localhost','root','');
  mysql_select_db('dbname');
?>

これはどういう意味ですか、どうすればメッセージを削除できますか?

86

あなたの問題に対するいくつかの解決策があります。

MySQLiの使い方は次のようになります。

<?php
$connection = mysqli_connect('localhost', 'username', 'password', 'database');

データベースクエリを実行することも簡単で、古い方法とほぼ同じです。

<?php
// Old way
mysql_query('CREATE TEMPORARY TABLE `table`', $connection);
// New way
mysqli_query($connection, 'CREATE TEMPORARY TABLE `table`');

Mysql_ *からのものも含め、すべての非推奨警告をオフにします。

<?php
error_reporting(E_ALL ^ E_DEPRECATED);
128
Tharindu Kumara

Mysql_connectの前に '@'を追加することで警告を取り除くことができます。

@mysql_connect('localhost','root','');

しかし警告があなたに言っているので、mysql拡張は将来削除されるのでmysqliかPDOを使用してください。

30
Rebirth

これだけのための非推奨メッセージを抑制するために(そしてあなたのコードの中で他の非推奨を常に知らされるために)、@の接頭辞に接頭辞を付けることができます。

<?php
$connect = @mysql_connect('localhost','root','');
mysql_select_db('dbname');
?> 
9
IanMcL

PHP 5.5.xで廃止予定の機能

オリジナルのMySQL拡張機能 は現在推奨されておらず、データベースに接続するとE_DEPRECATEDエラーを生成します。 代わりに** MYSQLiまたはPDO_MySQLの拡張子を使用してください。**

構文:

<?php
  $connect = mysqli_connect('localhost', 'user', 'password', 'dbname');

また、 すべてのmysql_*関数をmysqli_*関数に置き換える

の代わりに

<?php
 $connect = mysql_connect('localhost','root','');
  mysql_select_db('dbname');
?> 
7
Krish R

この警告は、新しい拡張子が表示されたために表示されます。それはあなたがまだ古いものを使用することができると仮定しますが、場合によってはそれは不可能です。

データベースとの接続方法を説明します。あなただけの変数の値を変更する必要があります。

私の接続ファイル: connection.php

<?php    
 $Host='IP or Server Name (usually "localhost") ';
 $user='Database user';
 $password='Database password';
 $db='Database name';

 //PHP 5.4 o earlier (DEPRECATED)
 $con = mysql_connect($Host,$user,$password) or exit("Connection Error");
 $connection = mysql_select_db($db, $con);

 //PHP 5.5 (New method)
 $connection =  mysqli_connect($Host,$user,$password,$db);
?>

クエリを実行すると拡張子も変わります。

クエリファイル: "example.php"

<?php
 //First I call for the connection
 require("connection.php");

 // ... Here code if you need do something ...

 $query = "Here the query you are going to perform";

 //QUERY PHP 5.4 o earlier (DEPRECATED)
 $result = mysql_query ($query) or exit("The query could not be performed");

 //QUERY PHP 5.5 (NEW EXTENSION)
 $result = mysqli_query ($query) or exit("The query could not be performed");    
?>

この方法は MySQL Improved Extension を使用していますが、 PDO(PHP Data Objects) を使用できます。

最初の方法はMySQLデータベースでのみ使用できますが、PDOはさまざまな種類のデータベースを管理できます。

例を挙げますが、最初のものだけを使用すると言う必要があるので、エラーがある場合は訂正してください。

私のPDO接続ファイル: "PDOconnection.php"

<?php
 $hostDb='mysql:Host= "Here IP or Server Name";dbname="Database name" ';
 $user='Database user';
 $password='Database password';

 $connection = new PDO($hostDb, $user, $password);
?>

クエリファイル(PDO): "example.php"

<?php
 $query = "Here the query you are going to perform";
 $result=$connection->$query;
?>

言うまでもありませんが、警告を非表示にすることはもちろん可能ですが、エラーが発生した場合は時間を節約することができます(すべての人が理論を知っていますが、時間をかけて仕事をする場合)脳がない^^)。

5
jCastellote

これは、PHP 5.5を使用しているか、Webサーバーが5.5.0にアップグレードされたためです。

mysql_*関数は5.5.0から非推奨になりました

enter image description here

Source

3

mysql_ *は 公式には非推奨 _ PHP v5.5.0以降で、将来削除される予定です。

mysqli_ * functionまたは pdo を使用

Oracleを読む MySQLiに変換する

1
Simone Nigro

PDOクラスはこれらのメソッドを置き換えます。 MysqlまたはMariaDBの例:

$BDD_SQL = new PDO('mysql:Host='.BDD_SQL_SERVER.';dbname='.BDD_SQL_BASE.';charset=utf8', 
        BDD_SQL_LOGIN, BDD_SQL_PWD, 
        array(
          PDO::ATTR_EMULATE_PREPARES => false,
          PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //launch exception if error
          PDO::ATTR_DEFAULT_FETCH_MODE=> PDO::FETCH_ASSOC
                ));

出典: PDOクラス

0
Karima Rafes

Pdoオブジェクトのような、あなたのdbに接続するための新しい方法を使い始めるようにあなたに言っているのは、ただの警告です

http://code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly--net-25338

マニュアルはこちら

http://www.php.net/manual/en/book.pdo.php

0
user1652319

警告「deprecated」は、一般に、古くなっている機能を使用しようとしていることを意味します。それはあなたのコードが機能しないと言う意味ではありませんが、リファクタリングを検討すべきです。

あなたのケースでは関数mysql_は非推奨です。あなたがそれについてもっと知りたいのであれば、ここですでに良い説明があります: なぜ私はPHPでmysql_ *関数を使用してはいけないのですか?

0
MSadura
<?php 
$link = mysqli_connect('localhost','root',''); 
if (!$link) { 
    die('Could not connect to MySQL: ' . mysqli_error()); 
} 
echo 'Connection OK'; mysqli_close($link); 
?>

これで問題は解決します。

0
zubair1024

あなたがあなたのコーディングをしたら

ini_set("error_reporting", E_ALL & ~E_DEPRECATED); 

良い選択肢ですが、もし始めているなら間違いなくmysqliを使うべきです。

0
ManuSharma

さて、私はちょうど私が新しいホスティングに移動したときに私はちょうどそのようなメッセージに直面しました!とにかく私は "mySQL"を "mySQLi"に変更しようとしましたが、うまくいきませんでしたので、私はこれをしました:

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
# Turn off all error reporting
error_reporting(0);
$connect_myconn = "Database Connection";
$hostname_myconn = "localhost";
$database_myconn = "db name";
$username_myconn = "user name";
$password_myconn = "pass";
$myconn = mysql_connect($hostname_myconn, $username_myconn, $password_myconn) or die("<h1 style=margin:0;>A MySQL error has occurred.</h1><p><b>Your Query:</b> " . $connect_myconn . "<br /> <b>Error Number:</b> (" . mysql_errno() . ")</p>" . mysql_error());
mysql_select_db($database_myconn, $myconn);
?>

トリックはエラー報告をオフにすることです:)

# Turn off all error reporting
error_reporting(0);
0
Al3abMizo Games