2013-03-29 41 views
-1

我在连续选择一个字段时遇到了一些困难。也许有人可以指出我正确的方向来阅读一些适当的文件,我很新。PHP-MySQL select,from,where

我有一个表称为用户,我有一个用户名设置为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; 

对于这个问题的缘故,密码是“密码”。当回显$密码时,我应该看到'密码'。但没有。

我可以写入数据库和一切。我还包括一个db.php,它有我的数据库信息连接。

任何帮助将是伟大的。

+0

我知道代码很脆弱。目前,全部用于测试。 – Ryan

+4

我希望我能多次提高@pst的评论。请不要被第1点的语气所阻挡。 _请将#2点放在心上(先用'mysqli'代替'mysql',继续转义输入和/或使用PDO或类似的东西进行数据库交互)。 *绝对毫不犹豫*注意点#3。您应该_never_能够检索用户的密码。你可以重置它,但永远不能读取它。 – 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

除了登录/登录错字,这工作。我将不得不查找mysql_real_escape_string的功能。谢谢 – Ryan

1

这是告诉你,没有在表中的用户名为“密码”栏。

+0

它完全是因为我现在正在看它..嗯... – Ryan

+0

@Ryan你*“保存”*表?你连接到*相同的*数据库?从CLI中,使用'DESCRIBE users'并查看该列是否已列出。如果是,请将结果*复制并粘贴到原始问题中。如果没有,你已经发现了这个问题。 – 2013-03-29 23:29:00

+0

是的,还没有在数天内对表格做过修改。但是当我去编辑密码来重命名它时,它最后有一个空格。会把它搞砸吗? – Ryan

0

字符串列需要单引号。否则SQL认为,这是一个表名。试试这个:

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

不要忘记逃避你的变量,以防止SQL注入。另外,在MySQL中使用反引号来表/列名称可以避免保留名称的问题。

相关问题