这是造成问题的一条线。
mysql_connect($dbhost ,$dbuser, $dbpass); mysql_select_db($dbname);
mysql_query("SET NAMES 'utf8'");
mysql_set_charset('utf8');
我刚收到codecanyon的代码,我不明白如何修复它。它说已被弃用
答案 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,这是更多功能的。