【发布时间】:2017-05-10 00:14:03
【问题描述】:
我需要根据随时间变化的过滤器动态启动查询。每次过滤器都在字符串变量$filter中。
我可以在WHERE 之后绑定它吗,就像下面的代码一样?它似乎不起作用。我期望的结果查询是SELECT NAME FROM PERSONA WHERE GENDER='F'
$filter = "GENDER='F'";
$stmt = mysqli_stmt_init($connection);
mysqli_stmt_prepare($stmt, "SELECT NAME FROM PERSONA WHERE ?");
mysqli_stmt_bind_param($stmt, 's', $filter);
【问题讨论】:
-
这是一种奇怪的绑定方式。我希望看到
WHERE GENDER = ?,而您会将F绑定到该参数... -
^ 这也适用于列。
-
这个想法是 $filter 可能会改变并且并不总是指代 GENDER:它可能是 CITY='NY' 等等。
标签: php mysql mysqli prepared-statement sql-injection