PHP-MySQL选择,从,从何处

PHP-MySQL选择,从,从何处,php,mysql,database,Php,Mysql,Database,我在连续选择一个字段时遇到一些困难。也许有人能给我指出正确的方向来阅读一些适当的文档,我在这方面是相当新的 我有一个名为users的表,其中有一行用户名设置为ryanjay。我正在尝试从此行中选择密码 这就是我现在所拥有的,我得到了一个错误: “字段列表”中的未知列“密码” 这是我的密码 $loggin_user = $_COOKIE['username']; $query = "SELECT password FROM users WHERE username = $loggin_user"

我在连续选择一个字段时遇到一些困难。也许有人能给我指出正确的方向来阅读一些适当的文档,我在这方面是相当新的

我有一个名为users的表,其中有一行用户名设置为ryanjay。我正在尝试从此行中选择密码

这就是我现在所拥有的,我得到了一个错误:

“字段列表”中的未知列“密码”

这是我的密码

$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”。当回显$password时,我应该看到“password”。但什么都没有

我能写数据库和所有东西。我还包括一个db.php,其中包含用于连接的数据库信息

任何帮助都会很好

试试看

$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;

它告诉您,用户表中没有名为password的列。

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

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

不要忘记转义变量以防止SQL注入。此外,在MySQL中使用反勾号来表示表/列名更为美观,以避免保留名称出现问题。

这不是问题所在。如果在这个连接处,密码不是列名,那将是一个语法错误。事实上,密码在MySQL中不是保留字。除了登录/登录输入错误之外,这也起到了作用。我必须查一下mysql\u real\u escape\u string的功能。谢谢你,它可以逃出有害的字符来阻止一些mysql注入技术。但是,您应该考虑切换到mysqli或PDO。@fyrye请阅读-mysql\u real\u escape\u字符串不应该-也就是说不应该-用于一般参数卫生。这完全是谎言,因为我现在正在查看它。。嗯…@Ryan你救了那张桌子吗?您是否连接到同一个数据库?在CLI中,使用“描述用户”并查看是否列出该列。如果是,请将结果复制并粘贴到原始问题。如果没有,您已经找到问题。是的,已经有天没有对表进行更改了。但当我去编辑密码重命名它时,它的末尾有一个空格。这会不会搞砸了?@Ryan我不相信它会从给定的代码中生成错误消息。奇怪。。。我能用上面的答案让它工作。谢谢,我知道代码很脆弱。现在,一切都是为了测试。我希望我能不止一次投票给@pst的评论。请不要因为第一点的语气而拖延。请牢记第2点:首先使用mysqli而不是mysql,然后转义您的输入和/或使用PDO或类似的工具进行数据库交互。绝对毫不犹豫地注意第三点。您永远不能检索用户的密码。您可以重置它,但永远不能读取它。用户名和密码不能存储在cookie中。用户输入这些详细信息,这些信息只在用户登录的单个请求中需要。@David感谢您的重写,您的评论的措辞要好得多-有时我需要安定下来:谢谢各位的评论。现在,我将继续使用mysql和用户名,因为这是一个测试站点,向一些客户展示一些网站的基本想法。当涉及到实际的站点和付费字时,它将全部被转换,可能由其他人编码。