This question already has answers here:
How can I prevent SQL injection in PHP?
(28个答案)
3年前关闭。
我有一种情况,我想在数组中添加名称列表,并在SQL查询中使用它。
我该怎么做:
如果我使用id可以正常工作(但是我不能在这里做)。问题是-名称中可以有逗号(即-
如果这是您的实际代码,我建议您切换到PDO,使用库或使用mysqli_real_escape_string转义您的值。
这是链接:http://php.net/manual/en/mysqli.real-escape-string.php
这是w3schools的准备好的声明链接,它们是有关其工作方式的高级概述:http://www.w3schools.com/php/php_mysql_prepared_statements.asp
如果您使用的是PDO,则语句查询的运行方式如下:
对于mysqli来说,它是相似的,有关差异,请参考上面的w3schools链接。
我强烈建议您远离旧的mysql驱动程序,至少要切换到mysqli。
(28个答案)
3年前关闭。
我有一种情况,我想在数组中添加名称列表,并在SQL查询中使用它。
我该怎么做:
$names = implode(',', $names);
$sql = "DELETE FROM product WHERE name NOT IN ($names)";
如果我使用id可以正常工作(但是我不能在这里做)。问题是-名称中可以有逗号(即-
benchpress rack, blue
),这会打断此查询。有没有办法绕过这个问题? 最佳答案
尝试这个:
$names = implode("','", $names);
$sql = "DELETE FROM product WHERE name NOT IN ('$names')";
如果这是您的实际代码,我建议您切换到PDO,使用库或使用mysqli_real_escape_string转义您的值。
这是链接:http://php.net/manual/en/mysqli.real-escape-string.php
这是w3schools的准备好的声明链接,它们是有关其工作方式的高级概述:http://www.w3schools.com/php/php_mysql_prepared_statements.asp
如果您使用的是PDO,则语句查询的运行方式如下:
$query= $conn->prepare("DELETE FROM product WHERE name NOT IN (:names)");
$query->bindParam(':names', $names);
$query->execute();
对于mysqli来说,它是相似的,有关差异,请参考上面的w3schools链接。
我强烈建议您远离旧的mysql驱动程序,至少要切换到mysqli。