2012-05-10 5 views
0

Я получаю Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'username'@'localhost' (using password: NO)mysql_real_escape_string ошибка

Вот мой код ..

<?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, или я просто делаю это неправильно?

ответ

3

Да, для этого вам нужно открыть соединение mysql.

Я рекомендую вам поместить mysql_connect() поверх скрипта, чтобы убедиться, что эта ошибка никогда не произойдет. (конечно, это может произойти, если вы неправильно подключились к базе данных)

1

Да, это необходимо.

Примечание:

соединение MySQL требуется перед использованием mysql_real_escape_string() в противном случае возникнет ошибка уровня E_WARNING является генерируется, и FALSE, возвращается. Если link_identifier не определен, используется последнее соединение MySQL.

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

1

Если вы не можете установить соединение MySQL вы можете использовать:

mysql_escape_string

НО: Это нежелательно из PHP 5.3.0!

Всегда используйте mysql_real_escape_string, если это возможно!

Смежные вопросы