我对使用带变量的引号的 sql 查询有一些问题。(一般我使用“绑定”,所以我没有这种问题)。这是查询:
$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='".$var."'");
语法似乎不正确,有人可以帮忙吗?
那么你可以尝试这样的事情:
$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注入也是安全的。希望这可以帮助!
一般来说,您应该使用 DBD(Perl 数据库驱动程序)或其他语言和驱动程序组合提供的参数绑定功能。我知道您正在使用 PHP(尽管您应该相应地标记您的问题以消除歧义。
这是关于如何在 PHP 中绑定 SQL 参数(使用 PDO)的 StackOverflow 线程。请注意,与其他语言中的类似功能相比,PHP PDO::bindParam 方法存在一些限制。因此,请阅读链接的线程以获取警告。
这是关于将参数绑定到语句的另一个讨论... for Perl(但在概念上适用于其他编程语言及其 SQL 库/驱动程序)。
你可以像这样使用它
$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='$var'");