mysql_connect(): mysql扩展已弃用并将来会被移除:请改用mysqli或PDO

3
An error occurred in script 'C:\xampp\htdocs\framework\connect.php' on line 13: 
mysql_connect(): The mysql extension is deprecated and will be removed in the future: use       mysqli or PDO instead 
Date/Time: 12-17-2013 15:10:43 

我该如何解决这个问题?我已经查过了,可能是PHP版本的问题,但仍然无法删除此错误消息。

<?php

/* Database config */

$db_host        = 'localhost';
$db_user        = '~';
$db_pass        = '~';
$db_database    = 'banners'; 

/* End config */


$link = @mysql_connect($db_host,$db_user,$db_pass) or die('Unable to establish a DB     connection');

mysql_set_charset('utf8');
mysql_select_db($db_database,$link);

?>

2
使用 mysqliPDO。结束。 - u_mulder
真的吗?我很惊讶!我无法想象这种事情会发生... - opalenzuela
2
读一下实际的消息怎么样? - Sirko
2个回答

8
简单来说,你需要重写所有数据库连接和查询。
你正在使用已弃用的mysql_*函数,而这些函数将来会被从PHP中删除。所以,你需要开始使用MySQLi或PDO,就像错误提示所警告的那样。
以下是使用PDO的基本示例(没有错误处理):
<?php
$db = new PDO('mysql:host=localhost;dbname=testdb;charset=utf8', 'username', 'password');
$result = $db->exec("INSERT INTO table(firstname, lastname) VAULES('John', 'Doe')");
$insertId = $db->lastInsertId();
?>

一个使用MySQLi的基本示例(没有错误处理):

$db = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
$result = $db->query("INSERT INTO table(firstname, lastname) VAULES('John', 'Doe')");

这里有一个方便的PDO教程(单击此处可访问),可以帮助你开始使用。还有很多其他的教程,其中一些是关于PDO替代品MySQLi的


您的回答很好,我给您点赞。 - Ryan
谢谢您的帮助!我已经将我的connect.php重写为mysqli,但是在我的demo.php中,我该如何将mysql转换为mysqli?有没有什么方法可以做到这一点?我是php的初学者。 - brianc
@brianc,我不知道demo.php文件里是什么代码。不幸的是,你只能从我在答案中发布的教程中阅读和学习。如果搜索的话,还有许多其他非常简单的MySQLi教程。 - TheCarver
在INSERT操作中,不应使用execquery。您应该使用预处理语句。 - Dharman

0
?php

/* Database config */

$db_host        = 'localhost';
$db_user        = '~';
$db_pass        = '~';
$db_database    = 'banners'; 

/* End config */


$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_database);
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接