0

我对使用带变量的引号的 sql 查询有一些问题。(一般我使用“绑定”,所以我没有这种问题)。这是查询:

$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='".$var."'");

语法似乎不正确,有人可以帮忙吗?

4

3 回答 3

2

那么你可以尝试这样的事情:

$query = sprintf("SELECT * FROM mytable WHERE var='%s' ORDER BY id ASC",mysql_real_escape_string($var));
$result = mysql_query($query) or die("Error:" . mysql_error());

另请注意, ORDER BY 的位置错误。它更具可读性,您无需为单个 qoute 连接而烦恼。mysql注入也是安全的。希望这可以帮助!

于 2012-10-24T10:19:28.070 回答
1

一般来说,您应该使用 DBD(Perl 数据库驱动程序)或其他语言和驱动程序组合提供的参数绑定功能。我知道您正在使用 PHP(尽管您应该相应地标记您的问题以消除歧义。

这是关于如何在 PHP 中绑定 SQL 参数(使用 PDO)的 StackOverflow 线程。请注意,与其他语言中的类似功能相比,PHP PDO::bindParam 方法存在一些限制。因此,请阅读链接的线程以获取警告。

这是关于将参数绑定到语句的另一个讨论... for Perl(但在概念上适用于其他编程语言及其 SQL 库/驱动程序)。

于 2012-10-24T10:36:52.983 回答
-1

你可以像这样使用它

$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='$var'");
于 2012-10-24T10:20:50.027 回答