Jul*_*Lam 3 php mysql sql post sql-injection
在访问我的数据库时,我让用户填写表单,并在目标页面中,在生成的MySQL查询中使用发布的值.
$query = mysql_query("SELECT pass FROM database WHERE user='$_POST[user]'");
Run Code Online (Sandbox Code Playgroud)
但是,由于某种原因,MySQL不喜欢我在命令中使用$ _POST变量,它只在我定义(例如)时才有效$user = $_POST['user'];,然后将$ user直接放在SQL命令中.
另一方面,我可以在INSERT语句中使用$ _POST值,其中不需要特定的列名:
$query = mysql_query("INSERT INTO database VALUES ('foo', 'bar', '$_POST[user]'");
Run Code Online (Sandbox Code Playgroud)
如果我尝试定义属性的INSERT语句(例如user='foo'),则会出现相同的问题.
我在SQL查询中做错了什么导致命令在运行时出错,但是使用格式化INSERT命令的特定方法?
希望,这不是"运气不好,看起来你必须分配所有发布的价值".嘿.
首先,注意SQL注入!
现在,要回答您的问题,请尝试执行此操作:
$query = mysql_query("SELECT `pass` FROM `database` WHERE `user` LIKE '" . mysql_escape_string($_POST['user']) . "';");
Run Code Online (Sandbox Code Playgroud)
你做错了几件事:
=运算符而不是LIKE运算符'$_POST阵列'PS:你应该用mysql_real_escape_string()而不是mysql_escape_string()!