繁体   English   中英

将变量插入SELECT语句的正确语法是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM