不,你不能這樣做。
雖然您可以有兩個準備好的語句並使用邏輯來選擇它們。
$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 . ';');
簡短回答:否 – zerkms
@zerkms:謝謝。我現在使用'sprintf'來構建它們。 –