已弃用的函数mysql_connect的替代方法

10

我已经设置好了这个亚马逊网络服务数据库。

我正在使用一个旧的应用程序教程进行开发。

当我查找时,我注意到mysql_connect已被废弃。

有什么替代方法可以使用吗?我该如何连接我的亚马逊数据库?

<?
mysql_connect("localhost", "username", "password") or die ("Can't connect to database server");
mysql_select_db("videoRecorderDemo") or die ("Can't select database");
mysql_query("SET NAMES 'utf8'");
?>

I get this error:

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'192.168.1.1' (using password: YES) in /www/zxq.net/r/e/d/red5vptest/htdocs/utility/db.php on line 2
Can't connect to database server

无论我使用何种凭证,都无法解决问题。而且亚马逊的代码示例展示了完全不同的连接方式,这也没有帮助到我。

有几个选项供您选择 - 可以参考这个问题中提到的任何一个选项。是的,如果AWS文档使用mysql库示例,那么他们不应该这样做! :) - halfer
5个回答

12

PHP 的文档说

该扩展从 PHP 5.5.0 开始已被弃用,并将在将来的版本中移除。应改用 MySQLiPDO_MySQL 扩展。

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

/*
 * This is the "official" OO way to do it,
 * BUT $connect_error was broken until PHP 5.2.9 and 5.3.0.
 */
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '
            . $mysqli->connect_error);
}

5
您收到的错误信息与mysql_connect的弃用无关。您在代码中使用的MySQL用户名和密码("username"和"password")是错误的——如果您不知道正确的值,请查阅安装的MySQL版本文档。(您可能需要创建用户和/或数据库。)
正如其他人提到的那样,mysql扩展的支持替代方案是mysqliPDO MySQL

2

MysqlI(mysql improved)是mysql的继承者。

$Link = new mysqli($Hostname, $Username, $Password, $Database);
$Result = $Link->query('SELECT ...');
$Rows = $Result->fetch_array(MYSQLI_NUM);

1
一种替代MySQL扩展的简单方法是MySQLi。它不是使用旧的MySQL库函数,而是使用新的面向对象的API,提供了更好的性能和安全性。保留html标签。
mysql_connect("host", "username", "password") 

...你可以使用例如以下方式进行连接:

$db = mysqli_connect("host", "username", "password");

阅读这篇有用的教程可能非常值得: http://phpmaster.com/avoid-the-original-mysql-extension-1/


0

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