小编典典

我应该如何在mysql_query函数中编写PHP $ _POST vars?

sql

在访问我的数据库时,我让用户填写了一个表单,并且在目标页面中,发布的值用于生成的MySQL查询中。

$query = mysql_query("SELECT pass FROM database WHERE user='$_POST[user]'");

但是,由于某种原因,MySQL不喜欢我在命令中使用$ _POST变量,并且仅当我定义(例如)$user = $_POST['user'];然后将$
user直接放在SQL命令中时,MySQL才起作用。

另一方面,我可以在不需要特定列名的INSERT语句中使用$ _POST值:

$query = mysql_query("INSERT INTO database VALUES ('foo', 'bar', '$_POST[user]'");

如果我尝试在INSERT语句中定义了属性(例如user='foo'),则会出现相同的问题。

我在SQL查询中做错了什么,导致命令在运行时出错,但是可以使用格式化INSERT命令的特定方法工作?

希望这不是“运气不好,看起来您必须分配所有过帐的值”。嘿。


阅读 208

收藏
2021-04-28

共1个答案

小编典典

现在,要回答您的问题,请尝试执行以下操作:

$query = mysql_query("SELECT `pass` FROM `database` WHERE `user` LIKE '" . mysql_escape_string($_POST['user']) . "';");

您做错了几件事:

  • 使用=运算符而不是LIKE运算符
  • 不将值包含在SQL查询中 '
  • 不将用户索引包含在$_POST数组中'

PS:您应该使用mysql_real_escape_string()而不是mysql_escape_string()

2021-04-28