Я использую этот 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'
Спасибо большое!
Сначала подключитесь к серверу базы данных и выберите базу данных, используя mysql_connect
и mysql_select_db
. Функция mysql_query
попытается открыть соединение с параметрами по умолчанию или, как указано в руководстве:
Если такой ссылки не обнаружено, она попытается создать такую, как если бы mysql_connect() был вызван без аргументов.
Следовательно, PHP пытается подключиться к localhost с именем пользователя "nobody" и без пароля.
mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_select_db('my_database');
.. и вы готовы к работе.
Я уверен, что ваш id является INTEGER, поэтому следующее должно работать:
$query = sprintf("SELECT * FROM `customers` WHERE id=%d ", $user_id);
Также существует проблема с аутентификацией базы данных. Вы успешно подключились к базе данных с помощью mysql_connect()?
Пользователю nobody
нужен пароль для использования базы данных. Очевидно, что это ошибка. Пользователь никто для сервера localhost имеет доступ запрещен при использовании без пароля
Access denied for user 'nobody'@'localhost' (using password: NO)
ИЛИ, хотя это не похоже на то, что машина, на которой вы запускаете свой код, не имеет доступа к машине, в которой работает база данных.
Вам нужно сначала подключиться к 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");
}
?>
SELECT * FROM customers WHERE id='1430'