我收到此警告,但程序仍然正常运行。
MySQL代码在PHP中显示了一条消息:
不推荐使用:mysql_connect():不推荐使用mysql扩展 将来将被删除:使用mysqli或PDO代替 第2行的C:\ xampp \ htdocs \ task \ media \ new \ connect.inc.php
我的connect.inc.php
页面是
<?php
$connect = mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
这意味着什么?如何消除此消息?
答案 0 :(得分:128)
您的问题解决方案很少。
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);
答案 1 :(得分:30)
您可以通过在mysql_connect之前添加“@”来删除警告。
@mysql_connect('localhost','root','');
但是警告告诉你,使用mysqli或PDO,因为将来会删除mysql扩展名。
答案 2 :(得分:9)
要单独禁止此弃用消息(并随时了解代码中的其他弃用),可以在connect前加上@:
<?php
$connect = @mysql_connect('localhost','root','');
mysql_select_db('dbname');
?>
答案 3 :(得分:7)
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');
?>
答案 4 :(得分:5)
显示此警告是因为出现了新的扩展名。 它认为你仍然可以使用旧的,但在某些情况下是不可能的。
我告诉你如何与数据库建立连接。您只需要更改变量的值。
我的连接文件: 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数据对象)。
第一种方法只能用于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 :(得分:3)
答案 6 :(得分:1)
mysql_ *是officially deprecated,将来会被删除。
阅读Oracle Converting to MySQLi
答案 7 :(得分:0)
它只是一个警告,告诉你开始使用更新的连接数据库的方法,比如pdo对象
http://code.tutsplus.com/tutorials/php-database-access-are-you-doing-it-correctly--net-25338
手册在这里
答案 8 :(得分:0)
警告“已弃用”通常表示您尝试使用过时的功能。它意味着你的代码无法工作,但你应该考虑重构。
在你的情况下,不推荐使用functons mysql_。如果您想了解更多相关信息,请点击此处:Why shouldn't I use mysql_* functions in PHP?
答案 9 :(得分:0)
<?php
$link = mysqli_connect('localhost','root','');
if (!$link) {
die('Could not connect to MySQL: ' . mysqli_error());
}
echo 'Connection OK'; mysqli_close($link);
?>
这将解决您的问题。
答案 10 :(得分:0)
好吧,今天我刚刚接到这样的消息,当我搬到新的主机!无论如何,我试图将“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);
答案 11 :(得分: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 Class
答案 12 :(得分:0)
如果您已完成编码,那么
@result = $statementHandle->fetchrow_array ;
for my $value (@result) {
if (! utf8::is_utf8($value)) {
utf8::decode($value) ;
# Log values for debugging the NULL/undef issue:
my $aValue = $value ;
my $len = length($aValue) ;
if (!defined($value)) {
$aValue = "<unnndefined>" ;
}
print {*::STDLOG} info => "daValue l=$len : $daValue\n" ;
}
}
是不错的选择但是如果你刚开始那么肯定你应该使用mysqli。
答案 13 :(得分:-2)
把它放在你的php页面中。
ini_set("error_reporting", E_ALL & ~E_DEPRECATED);
答案 14 :(得分:-4)
为我添加ToUnicodeEx
有效!
我使用Dim buf As New StringBuilder(256)
Dim keyboardState As Byte() = New Byte(255) {}
If shift Then
keyboardState(CInt(Keys.ShiftKey)) = &HFF
End If
If altGr Then
keyboardState(CInt(Keys.ControlKey)) = &HFF
keyboardState(CInt(Keys.Menu)) = &HFF
End If
InputDevice.NativeMethods.ToUnicodeEx(CUInt(Keys.A), 0UI, keyboardState, buf, 256, 0UI,
New IntPtr(1033))