[英]What is the proper syntax for inserting variables into a SELECT statement?
我相信我的SQL语句中有一个简单的语法问题。 如果运行此代码,则数据库查询中将出现错误。
$user = $_GET['linevar'];
echo $user; // testing - url variable echos correctly
$sql = "SELECT * FROM `userAccounts` WHERE `name` = $user";
$result = mysql_query($sql) or die("Error in db query");
如果我将$user
$sql
字符串中的$user
替换$user
'actualName'
或表中的已知记录,则代码可以正常工作。 我在SQL字符串中错误地使用了$
变量吗?
您需要用引号将从$user
获得的值括起来,因为它可能不是数字:
$sql = "SELECT * FROM `userAccounts` WHERE `name` = '$user'";
只是要注意,您还应该阅读SQL注入,因为此代码容易受到影响。 解决方法是将其通过mysql_real_escape_string()
传递:
$user = mysql_real_escape_string( $_GET['linevar']);
您也可以替换您的or die();
逻辑,其内容多一些,可以在发生不良情况时获得错误消息,例如:
or die("Error in db query" . mysql_error());
这应该工作:
$sql = "SELECT * FROM `userAccounts` WHERE `name` = '" . $user . "'";
您需要转义get输入,然后引用它。
// this is important to prevent sql injection.
$user = mysql_real_escape_string($_GET['linevar']);
$sql = "SELECT * FROM `userAccounts` WHERE `name` = '$user'";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.