我在使用带变量的引号的sql查询中遇到了一些问题。 (通常我使用“绑定”,所以我没有这种问题)。以下是查询:在sql查询中使用简单和双引号
$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='".$var."'");
语法似乎不正确,任何人都可以帮忙吗?
我在使用带变量的引号的sql查询中遇到了一些问题。 (通常我使用“绑定”,所以我没有这种问题)。以下是查询:在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 concate。 也是安全的mysql注入。 希望这有助于!
您可以使用它像
$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='$var'");
一般来说,你应该使用参数绑定您的DBD(Perl的数据库驱动程序)或其他语言和驱动器组合提供的功能。我收集你正在使用PHP(虽然你应该标记你的问题,以消除歧义)。
这是How to bind SQL parameters in PHP(使用PDO)上的StackOverflow线程。注意:PHP PDO :: bindParam方法存在限制其他语言类似的功能。因此,阅读链接的线程注意事项。
这是另一个讨论有关Binding Parameters to Statements ... Perl的(但概念适用于其他编程语言和他们的SQL库/驱动器)。
我知道,我总是使用绑定技术。在这里我想知道,因为我正在为使用sql查询的大量引用项目工作,所以我想说清楚 – Newben
请,不要concat SQL字符串... – Prinzhorn
这种方法通常容易出现SQL注入攻击,所以它不是真的可取的。“似乎不是合作的直立“意味着什么都没有;你有错误吗? – lanzz
@lanzz,抱歉不准确:实际上查询会加载一些我在网页上显示的数据。但是在这里显示这些数据失败 – Newben