php pdo仅在给出值的情况下才准备执行语句

时间:2018-10-03 18:00:37

标签: php pdo

我有一个带有exec语句的简单PDO准备语句。

我遇到了一个问题,我应该只在提供值的情况下才传递参数,否则就不需要提供该值或将其设置为默认值(不是字符串)。

有没有一种方法可以更改exec语句以使其工作?仅在有发布值的情况下才传递参数,或者默认情况下如何发送?

 exec ******  @userId=? ,@Gender=?  ,@MinAge=?  ,@MaxAge=?  ,@AppId=?"  );
$stmt->bindParam(1, $_POST['username']);    
$stmt->bindParam(2, $_POST['gender'] ); 
$stmt->bindParam(3, $_POST['minAge']);  
$stmt->bindParam(4, $_POST['maxAge']);  
$stmt->bindParam(5,  $_POST['appid']);  
 $stmt->execute();

2 个答案:

答案 0 :(得分:0)

如果可以在查询中使用默认值,则可以在php中设置默认值,除非必须通过检查POST值是否为空来动态创建where子句,然后绑定相应的参数。如果使用像:userId

这样的namedParams将会很容易

答案 1 :(得分:0)

如果您想通过输入null作为默认值(如果未输入值)(假设null是确定的),则可以测试输入是否为空,并在输入以下内容时传递null它是空的...

$stmt->bindParam(1, !empty($_POST['username'])? $_POST['username']:null);

您可以将null更改为任何其他值,原理相同。