我正在尝试运行多个查询来将记录插入到不同的表中。我有多个SQL查询:
$user_query = $pdo->prepare("INSERT INTO tbl_user...
$user_settings_query = $pdo->prepare("INSERT INTO tbl_user_settings...
$user_details_query = $pdo->prepare("INSERT INTO tbl_user_details...
然后我有一个IF语句:
if($user_query->execute() && $user_settings_query->execute() && $user_details_query->execute) {
$pdo->commit();
}
我从一个表单中获取这些数据,一些字段是从复选框中检索的数组值:
settings[] = 'xyz';
我让一切正常运行,查询执行并提交到DB,但是,如果任何数组为空,它只会向表中写入一个空值。例如,设置和详细信息只有一列(JSON),但如果数组为空,我不希望执行该查询。
有没有一种方法可以这样做:
IF($user_query->execute() && IF(!empty($user_settings_array)?$user_settings_query->execute():'') ... )
发布于 2020-01-10 08:19:13
示例中的? :
操作符就是它。注意:这种优先级在PHP中是不常见的。最好是将表达式完全括起来。
其他选项包括&&
和||
。例如:
if ($user_query->execute() && (empty($user_settings_array) || $user_settings_query->execute()) ... )
发布于 2020-01-10 08:21:22
只需删除" if ",并将execute放入if语句中
if(!empty($user_settings_array) && $user_query->execute() && $user_settings_query->execute()){
$pdo->commit();
}
https://stackoverflow.com/questions/59673893
复制相似问题