我相信我的 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");
如果我将 $sql
字符串中的 $user
替换为 'actualName'
或表中的已知记录,则代码可以正常工作。我在 SQL 字符串中是否错误地使用了 $
变量?
最佳答案
您需要用引号将从 $user
获取的值括起来,因为它可能不是数字:
$sql = "SELECT * FROM `userAccounts` WHERE `name` = '$user'";
请注意,您还应该阅读有关 SQL 注入(inject)的内容,因为此代码很容易受到它的影响。解决方法是将其传递给 mysql_real_escape_string()
:
$user = mysql_real_escape_string( $_GET['linevar']);
您还可以用信息更丰富的内容替换您的 或 die();
逻辑,以便在发生不良情况时获取错误消息,例如:
or die("Error in db query" . mysql_error());
关于php - 将变量插入 SELECT 语句的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11346673/