不赞成使用: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
错误。 而是使用** MYSQLi或PDO_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
手册在这里
一般警告“不推荐”意味着您正在尝试使用过时的功能。 它意味着你的代码不会工作,但你应该考虑重构。
在你的情况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);