2013-04-27 109 views
0

我写其中用户loged脚本只是找到了与他们的用户名MySQL。哪里声明。查询

('SELECT * FROM messages WHERE username = ' . $_SESSION['username'] . ' ') 

输出存储在MySQL数据库中的消息。来自未知列“约翰”在“where子句”

+4

这不是它抛出这样的错误 – 2013-04-27 06:39:34

+3

@ Mr.Alien查询:如果'$ _SESSION [ '用户名'] ==“John'',它肯定可以。他实际上并没有将它作为字符串转义,所以它被解释为列名。 – DCoder 2013-04-27 06:40:41

+1

@DCoder这是一个值,而不是列名 – 2013-04-27 06:42:04

回答

1

你的脚本是开放的SQL注入。请阅读http://php.net/manual/en/security.database.sql-injection.php

要回答你的问题。您错过了用户名字符串周围的双引号。

('SELECT * FROM messages WHERE username = "' . $_SESSION['username'] . '" ') 
             ^       ^
+2

除非你在ansi模式下它的单引号。 – Musa 2013-04-27 06:42:46

+2

+1好提。 – Bart 2013-04-27 06:48:03