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

标签 php mysql

我相信我的 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/

相关文章:

php - 用于插入 MySQL 数据库的 python 脚本 - 特殊符号 - unicode : search and store

php - 逗号运算符 PHP

javascript - Ajax - 单击按钮更新数据库

MYSQL - 2个组合表之间的搜索条件

php - 使用php在mysql中使用一张表从多个表中检索数据

mysql - 如何根据col值进行选择

C# 用户名比较(2 个字符串)

php - Laravel 函数中无法识别变量

php - 打印联合选择

mysql - 在子查询中使用 mySQL 变量