0

我越来越Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'username'@'localhost' (using password: NO)

这是我的代码..

<?php
include 'config.php';
$email = mysql_real_escape_string($_GET['email']);

$validation = filter_var($email, FILTER_VALIDATE_EMAIL);
if ( $validation ) {
    // Make a MySQL Connection
    mysql_connect($Host,$Username,$Password) or die(mysql_error());
    mysql_select_db($Database) or die(mysql_error());

    // Insert rows
    mysql_query("INSERT INTO formusers
    (formemail) VALUES('$email') ") 
    or die(mysql_error()); 
}
?>

如果我移动线路以建立数据库连接,它确实有效。使用前是否需要建立数据库连接,mysql_real_escape_string还是我做错了?

4

3 回答 3

3

是的,您确实需要一个开放的 mysql 连接才能做到这一点。

我建议您将 mysql_connect() 放在脚本的顶部,以确保永远不会发生此错误。(当然,如果您错误地连接到数据库,它仍然会发生)

于 2012-05-10T14:14:44.780 回答
1

是的,这是必需的。

笔记:

在使用 mysql_real_escape_string() 之前需要 MySQL 连接,否则会生成 E_WARNING 级别的错误,并返回 FALSE。如果未定义 link_identifier,则使用最后一个 MySQL 连接。

http://php.net/manual/en/function.mysql-real-escape-string.php

于 2012-05-10T14:18:02.453 回答
1

如果您无法建立 mysql 连接,您可以使用:

mysql_escape_string

但是:自 PHP 5.3.0 起已弃用!

如果可能,请始终使用mysql_real_escape_string

于 2012-05-10T14:19:59.507 回答