【发布时间】:2012-07-16 16:47:59
【问题描述】:
我听说在 SQL 语句中使用 PREPARE 和 EXECUTE 会将用户提供的数据清理为无法进行 SQL 注入的数据。这是真的吗?
我原来的查询是这样的:
$query =
"SELECT * FROM sales_orders
WHERE ksisoldby ILIKE '".$user."'";
这是我将其更改为准备/执行语句的最佳猜测:
<?php
$id = $_POST['id'];
$search = $_POST['user_supplied_search_term'];
PREPARE search_query_function (varchar, varchar) AS
SELECT * FROM sales_orders
WHERE ksisoldby ILIKE '$1'";
EXECUTE search_query_function($id, $search);
?>
这是正确写入/调用的吗?还有一些我读过的内置 php 对象 (PDO)。我应该使用它们来代替还是结合使用?感谢您就这类广泛的问题提供帮助。
【问题讨论】:
-
是的,您应该使用 PDO 代替新代码。
-
这不是有效的 PHP 语法。
-
@nickb 是的,你是对的。现在我想起来了,我不知道如何将
prepare/execute合并到 php 中。我现在所拥有的没有意义,我明白了。。 -
我认为你应该简化你的例子来学习如何使用准备好的语句。我们已经讨论了SQL query itself already。
-
@ErwinBrandstetter 绝对是个好主意。固定。
标签: php sql postgresql