在访问我的数据库时,我让用户填写了一个表单,并且在目标页面中,发布的值用于生成的MySQL查询中。
$query = mysql_query("SELECT pass FROM database WHERE user='$_POST[user]'");
但是,由于某种原因,MySQL不喜欢我在命令中使用$ _POST变量,并且仅当我定义(例如)$user = $_POST['user'];然后将$ user直接放在SQL命令中时,MySQL才起作用。
$user = $_POST['user'];
另一方面,我可以在不需要特定列名的INSERT语句中使用$ _POST值:
$query = mysql_query("INSERT INTO database VALUES ('foo', 'bar', '$_POST[user]'");
如果我尝试在INSERT语句中定义了属性(例如user='foo'),则会出现相同的问题。
user='foo'
我在SQL查询中做错了什么,导致命令在运行时出错,但是可以使用格式化INSERT命令的特定方法工作?
希望这不是“运气不好,看起来您必须分配所有过帐的值”。嘿。
现在,要回答您的问题,请尝试执行以下操作:
$query = mysql_query("SELECT `pass` FROM `database` WHERE `user` LIKE '" . mysql_escape_string($_POST['user']) . "';");
您做错了几件事:
=
LIKE
'
$_POST
PS:您应该使用mysql_real_escape_string()而不是mysql_escape_string()!
mysql_real_escape_string()
mysql_escape_string()