不赞成使用:mysql_connect()

我得到这个警告,但程序仍然正常运行。

MySQL代码在PHP中显示了一条消息:

不推荐使用:mysql_connect():不推荐使用mysql扩展名,将来会被删除:使用mysqli或PDO代替第二行的C:\ xampp \ htdocs \ task \ media \ new \ connect.inc.php

我的connect.inc.php页面是

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

这是什么意思?我怎样才能消除这个信息?

你的问题有几个解决方案。

与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`'); 

关闭包含它们在内的所有不推荐使用的警告:

 <?php error_reporting(E_ALL ^ E_DEPRECATED); 

您可以通过在mysql_connect之前添加“@”来删除警告。

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

但是正如警告告诉你的那样,使用mysqli或者PDO,因为mysql扩展将来会被删除。

要单独禁止弃用消息(并且保持代码中的其他弃用通知),您可以用@作为连接的前缀:

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

在PHP 5.5.x中弃用的功能

原来的MySQL扩展现在已经被弃用,并且在连接到数据库时会产生E_DEPRECATED错误。 而是使用** MYSQLiPDO_MySQL扩展。**

句法:

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

另外, 将所有mysql_*函数替换为mysqli_*函数

代替

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

显示此警告是因为出现了新的分机。 它认为你仍然可以使用旧的,但在某些情况下,这是不可能的。

我向你展示如何与数据库进行连接。 您只需要更改变量的值。

我的连接文件: 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改进的扩展 ,但你可以使用PDO(PHP数据对象)

Firt方法只能用于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; ?> 

要说完当然可以隐藏警告,但这不是一个好主意,因为如果发生错误,可以帮助您以后节省时间(我们都知道这个理论,但是如果您有时会工作很多小时..大脑不存在^^)。

那是因为你使用PHP 5.5或者你的网络服务器已经升级到5.5.0。

mysql_*函数从5.5.0开始已被弃用

在这里输入图像描述

Source

mysql_ *从PHP v5.5.0开始正式被弃用 ,将来会被删除。

使用mysqli_ *函数或者pdo

阅读Oracle 转换为MySQLi

如果你已经完成你的编码了

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

是不错的选择,但如果你在开始,那么肯定你应该使用mysqli。

它只是一个警告,告诉你开始使用新的连接到你的数据库的方法,如pdo对象

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

手册在这里

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

一般警告“不推荐”意味着您正在尝试使用过时的功能。 它意味着你的代码不会工作,但你应该考虑重构。

在你的情况functons mysql_已被弃用。 如果你想知道更多关于这里已经很好的解释: 为什么我不应该在PHP中使用mysql_ *函数?

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

这将解决您的问题。

那么,今天我刚搬到新的主机时就遇到了这样的消息! 无论如何,我已经尝试将“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); 

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类

把这个在你的PHP页面。

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

添加@为我工作!

我测试了error_reporting(E_ALL ^ E_DEPRECATED);