不推荐使用:mysql_connect()

时间:2014-02-15 11:49:01

标签: php mysql function deprecated

我收到此警告,但程序仍然正常运行。

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');
?>

这意味着什么?如何消除此消息?

15 个答案:

答案 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)

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

从{5.5}起,mysql_*函数已被弃用

enter image description here

Source

答案 6 :(得分:1)

从PHP v5.5.0开始,

mysql_ *是officially deprecated,将来会被删除。

使用mysqli_*功能或pdo

阅读Oracle Converting to MySQLi

答案 7 :(得分:0)

它只是一个警告,告诉你开始使用更新的连接数据库的方法,比如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

答案 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))

进行了测试