替换已弃用的函数 mysql_connect [重复]
Posted
技术标签:
【中文标题】替换已弃用的函数 mysql_connect [重复]【英文标题】:Replacement for deprecated function mysql_connect [duplicate] 【发布时间】:2013-05-08 00:43:13 【问题描述】:所以我已经建立了这个亚马逊网络服务数据库
我正在为我打算使用它的应用程序编写一个旧教程。
我发现 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'");
?>
我收到此错误:
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
无论我使用什么凭据。 亚马逊的代码示例向您展示了一种完全不同的连接方式,这也无济于事。
【问题讨论】:
有几个选项供您选择——this question 中提到的任何一个选项。是的,如果 AWS 文档使用mysql
库示例,那么他们不应该这样做! :)
.
【参考方案1】:
The documentation for PHP says
此扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,应使用 MySQLi 或 PDO_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);
【讨论】:
【参考方案2】:您收到的错误消息与 mysql_connect
的弃用无关。您使用的 MySQL 用户名和密码(代码中的“用户名”和“密码”)是错误的——如果您不知道正确的值,请查看您安装的 MySQL 版本的文档。 (您可能需要创建用户和/或数据库。)
正如其他几个人所提到的,支持的 mysql 扩展替代方案是 mysqli 和 PDO MySQL。
【讨论】:
【参考方案3】:MysqlI(mysql改进型)是mysql的继任者。
$Link = new mysqli($Hostname, $Username, $Password, $Database);
$Result = $Link->query('SELECT ...');
$Rows = $Result->fetch_array(MYSQLI_NUM);
【讨论】:
【参考方案4】:MySQL 扩展的一个简单替代方案是 MySQLi。而不是
mysql_connect("host", "username", "password")
...您可以使用例如连接
$db = mysqli_connect("host", "username", "password");
可能值得阅读这个有用的教程: http://phpmaster.com/avoid-the-original-mysql-extension-1/
【讨论】:
【参考方案5】:手册建议使用 mysqli 作为替代 http://php.net/manual/en/book.mysqli.php
【讨论】:
以上是关于替换已弃用的函数 mysql_connect [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python 3 替换已弃用的 compiler.ast flatten 函数
Snapkit 常量替换已弃用的 .priorityMedium() .priorityHigh() .priorityLow()?