2015-03-18 2 views
-1

У меня есть код PHP, который вставляет данные в базу данных MySQL с использованием MySQLi. PHP код:Доступ запрещен для пользователя 'unset_username' @ 'localhost' (с использованием пароля: НЕТ)

function insert_db($lat, $lng, $date, $user){ 
    require('db_info_table.php'); 
    $conn = mysqli_connect($servername, $username, $password, $dbname); 
    if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
    return false; 
    } 
    $lat = mysql_real_escape_string($lat); // Sanitize data to prevent SQL injection 
    $lng = mysql_real_escape_string($lng); 
    $date = mysql_real_escape_string($date); 
    $user = mysql_real_escape_string($user); // << ERROR 
    $sql = "INSERT INTO table (lat, lng, date, user) 
    VALUES ('$lat', '$lng', '$date', '$user')"; 

    if (mysqli_query($conn, $sql)) { 
    return true; 
    } else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
    return false; 
    } 
    mysqli_close($conn); 
    } 

Детали подключения расположены в отдельном файле в том же каталоге, и это выглядит как этот

$servername = "localhost"; 
    $username = "user123"; 
    $password = "pass123"; 
    $dbname = "db123"; 

И я получаю эти ошибки, я уверен, что один ведет к другой

mysql_real_escape_string(): Доступ запрещен для пользователя 'unset_username' @ 'не локальный' (используя пароль: нЕТ)
MySQL _real_escape_string(): Ссылка на сервер не может быть установлена ​​в

И обе ошибки отображаются в одной строке (см. код).

+0

возможно дубликат [ «Ошибка подключения: Доступ запрещен для пользователя„корень“@„локальный“(используя пароль: ДА)» из функции PHP] (HTTP: // StackOverflow .com/questions/6445917/connect-failed-access-denied-for-user-rootlocalhost-using-password-yes) –

ответ

2

кажется, что вы подключаетесь к серверу с помощью MySQL я библиотеки, но затем пытаетесь использовать функцию из MySQL библиотеки, чтобы обеспечить вам строку. Используйте mysql i _real_escape_string() вместо этого.

Он основывается на том, что делает ту же вещь, что и mysql_real_escape_string(), но принимает два параметра: сначала есть связь, а вторая - переменная, которая должна быть защищена. Так что ваш код будет выглядеть следующим образом:

$lat = mysqli_real_escape_string($conn, $lat); 
    $lng = mysqli_real_escape_string($conn, $lng); 
    $date = mysqli_real_escape_string($conn, $date); 
    $user = mysqli_real_escape_string($conn, $user); 
+1

* Вместо этого используйте 'mysqli_real_escape_string()'. * * Они могут не знать точно, что делать с что. Лучше всего объяснить немного больше о том, «как» использовать его. –

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