Как выполнить запрос MySQL после чтения значений сеанса

0

Я использую этот script для чтения значения в сеансе, затем я хочу запросить базу данных об этом значении:

    <?php
session_start();
$user_id = $_SESSION["user_id"] ;
echo "Your user_id is: $user_id \n" ;

$query = sprintf("SELECT * FROM `customers` WHERE id='%s' ", $user_id);
$result = mysql_query($query);

if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

while ($row = mysql_fetch_assoc($result)) {
    $email =  $row['email'] . "\n";
    echo "Your e-mail adress is : $email \n" ;
}
?>

Я получаю это, когда тестирую страницу с помощью своего браузера: Ваш user_id: 1430

Неверный запрос: доступ запрещен для пользователя "nobody" @ "localhost" (с использованием пароля: нет). Весь запрос: SELECT * FROM customers WHERE id = '1430'

Спасибо большое!

Теги:
session

5 ответов

3
Лучший ответ

Сначала подключитесь к серверу базы данных и выберите базу данных, используя mysql_connect и mysql_select_db. Функция mysql_query попытается открыть соединение с параметрами по умолчанию или, как указано в руководстве:

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

Следовательно, PHP пытается подключиться к localhost с именем пользователя "nobody" и без пароля.

mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_select_db('my_database');

.. и вы готовы к работе.

1

Я уверен, что ваш id является INTEGER, поэтому следующее должно работать:

$query = sprintf("SELECT * FROM `customers` WHERE id=%d ", $user_id);

Также существует проблема с аутентификацией базы данных. Вы успешно подключились к базе данных с помощью mysql_connect()?

  • 0
    Это не так, потому что запрос строится правильно, вы можете увидеть это по ошибке SELECT * FROM customers WHERE id='1430'
  • 0
    Я не сказал, что это неправильно. Я просто говорю, что id = 'what' потерпит неудачу, потому что он сравнивает INTEGER с CHAR / TEXT.
1

Перед запросом вам нужно connect на хост базы данных с действительным пользователем/паролем:

mysql_connect($mysqlHost, $mysqlUser, $mysqlPassword);

Затем вам нужно select базу данных:

mysql_select_db($mysqlDatabase) ;
1

Пользователю nobody нужен пароль для использования базы данных. Очевидно, что это ошибка. Пользователь никто для сервера localhost имеет доступ запрещен при использовании без пароля

Access denied for user 'nobody'@'localhost' (using password: NO)

ИЛИ, хотя это не похоже на то, что машина, на которой вы запускаете свой код, не имеет доступа к машине, в которой работает база данных.

0

Вам нужно сначала подключиться к db:

<?php

$username = "";
$password = "";
$hostname = ""; 

//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
  or die("Unable to connect to MySQL");


$selected = mysql_select_db("DBNAMEGOESHERE",$dbhandle)
  or die("End");


}

?> 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню