2013-03-29 5 views
-1

У меня возникли трудности с выбором поля в строке. Возможно, кто-то может указать мне в правильном направлении, чтобы прочитать правильную документацию, я довольно новичок в этом.PHP - MySQL select, from, где

У меня есть таблица, называемая пользователями, где у меня есть строка с именем пользователя, установленным на ryanjay. Я пытаюсь выбрать пароль из этой строки.

Это то, что я прямо сейчас, и я получаю сообщение об ошибке:

Unknown column 'password' in 'field list'

Вот мой код

$loggin_user = $_COOKIE['username']; 

$query = "SELECT password FROM users WHERE username = $loggin_user"; 
$result = mysql_query($query) or die($query."<br/><br/>".mysql_error()); 
$password = mysql_result($result, 0); 
echo $password; 

Ради этого вопроса, пароль «пароль». При повторении пароля $ password я должен видеть «пароль». Но ничего.

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

Любая помощь будет отличной.

+0

Я знаю, что код уязвим. На данный момент это все для тестов. – Ryan

+4

Хотелось бы, чтобы я мог проголосовать за комментарий @ pst более одного раза. Пожалуйста, не откладывайте тон точки №1. _Пожалуйста, возьмите точку № 2 в начало (начните с использования 'mysqli' вместо' mysql', продолжите, ускользая от своего ввода и/или используя PDO или что-то вроде этого для взаимодействия с базой данных). * Определенно абсолютно без колебаний * прислушался к пункту № 3. Вы не должны получать пароль пользователя. Вы можете _reset_ это, но никогда не сможете _read_ это. – David

+3

Имена пользователей (и пароли) не должны храниться в файлах cookie. Пользователь вводит эти данные, они требуются только в том единственном запросе, который регистрирует пользователя. – Arjan

ответ

3

попробовать

$loggin_user = mysql_real_escape_string($_COOKIE['username']); 
$query = "SELECT `password` FROM `users` WHERE `username` = '$loggin_user'"; 
$result = mysql_query($query) or die($query."<br/><br/>".mysql_error()); 
$password = mysql_result($result, 0); 
echo $password; 
+0

Это не он. Это была бы синтаксическая ошибка, если бы на этом перекрестке было принято имя, отличное от имени столбца. – 2013-03-29 23:26:06

+1

И на самом деле, PASSWORD - это * не * зарезервированное слово в MySQL. См. Http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html –

+0

, кроме опечатки login/loggin, это сработало. Мне нужно посмотреть, что делает mysql_real_escape_string. Спасибо – Ryan

1

Это говорит вам, что нет столбца называется «пароль» в пользователях таблицы.

+0

это полностью лежит, потому что я смотрю на него прямо сейчас .. hmm ... – Ryan

+0

@Ryan Вы * «сохранили» * таблицу? Вы подключены к базе данных * того же *? Из CLI используйте «DESCRIBE users» и посмотрите, указан ли столбец. Если это так, скопируйте и вставьте результаты * в * исходный вопрос. Если нет, вы нашли проблему. – 2013-03-29 23:29:00

+0

yep, не вносили изменений в таблицу в днях. но когда я пошел редактировать пароль, чтобы переименовать его, у него было место в конце. будет ли это привинтить? – Ryan

0

Вам нужны одинарные кавычки для строковых столбцов. В противном случае SQL думает, что это имя таблицы. Попробуйте следующее:

$query = "SELECT `password` FROM `users` WHERE `username` = '".$loggin_user."' "; 

Не забудьте избежать переменных, чтобы предотвратить инъекции SQL. Также более удобно использовать обратные ссылки в MySQL для имен таблиц и столбцов, чтобы избежать проблем с зарезервированными именами.