由于不推荐使用mysql,我的整个脚本无法运行

时间:2016-05-26 03:08:57

标签: php mysql

这是造成问题的一条线。

mysql_connect($dbhost ,$dbuser, $dbpass); mysql_select_db($dbname);

mysql_query("SET NAMES 'utf8'");
mysql_set_charset('utf8'); 

我刚收到codecanyon的代码,我不明白如何修复它。它说已被弃用

3 个答案:

答案 0 :(得分:1)

请尝试使用示例

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";
?>

答案 1 :(得分:1)

<强>原因: 整个ext / mysql PHP扩展,提供所有以mysql_为前缀命名的函数,从PHP v5.5.0开始正式弃用,将来会被删除。

最初是在PHP v2.0(1997年11月)中针对MySQL v3.20引入的,自2006年以来没有添加任何新功能。再加上缺少新功能,难以在复杂的安全漏洞中维护这些旧代码

自2011年6月起,该手册中包含了针对其在新代码中使用的警告。 要修复: 正如错误消息所示,您可以考虑另外两个MySQL扩展:MySQLi和PDO_MySQL,其中任何一个都可以用来代替ext / mysql。从v5.0开始,两者都在PHP核心中,所以如果您使用的是抛出这些弃用错误的版本,那么几乎可以肯定只是立即开始使用它们,即。没有任何安装工作。

它们略有不同,但与旧的扩展相比具有许多优势,包括对事务,存储过程和预处理语句的API支持(从而提供了抵御SQL注入攻击的最佳方法)。 PHP开发人员Ulf Wendel已经对这些功能进行了全面的比较。

Hashphp.org有一个关于从ext / mysql迁移到PDO的优秀教程。 我知道可以通过在php.ini中设置error_reporting来排除E_DEPRECATED来抑制弃用错误:

error_reporting = E_ALL ^ E_DEPRECATED

但这不是专业的编码方式。

答案 2 :(得分:0)

快速回答:将mysql条目更改为&#39; mysqli&#39;。

//Conect to server, now we specify the database in the connect request.
$conn = mysqli_connect($dbhost ,$dbuser, $dbpass, $dbname);

$res = mysqli_query($conn, "SET NAMES 'utf-8'");
$bstat = mysqli_set_charset($conn, 'utf-8');
...
mysqli_free_result($res);
...
mysqli_close($conn);

不那么快答案:mysql扩展已经过时,它有很多安全漏洞,因此PHP 5.5+不再支持此扩展,而且其他版本不会包含它。

您现在应该使用mysqli扩展,它具有过程和面向对象的风格。或者将您的代码迁移到PDO,这是更多功能的。