我使用以下查询:
SELECT foo, bar FROM mytable WHERE foo=:foo AND userid=:userid;
我想放弃“admin”类用户的AND userid=:userid
部分(他们可以查看所有用户的foo
)。
有没有办法使用PDO预处理语句?或者我是否使用字符串连接来创建两个不同的查询?我正在考虑使用某种LIKE
结构,但感觉有点粗糙。
答案 0 :(得分:0)
不,你不能这样做。
您可以使用两个预准备语句并使用逻辑在它们之间进行选择。
$queryWithUser = $pdo -> prepare ('SELECT foo, bar FROM mytable WHERE foo=:foo AND userid=:userid;');
$queryWithoutUser = $pdo -> prepare ('SELECT foo, bar FROM mytable WHERE foo=:foo;');
$result = $doQueryWithUser?
$queryWithUser -> execute (array ('foo' => 123, 'userid' => 456)):
$queryWithoutUser -> execute (array ('userid' => 456));
或者您可以根据需要在特定时间生成所需的预准备语句。
$queryString = 'SELECT foo, bar FROM mytable WHERE foo=:foo';
if ($doQueryWithUser) {
$queryString .= ' AND userid=:userid';
}
$query = $pdo -> prepare ($queryString . ';');