页面代码在 UNION sql 查询后停止执行


Page code stops executing after UNION sql query

我仍然是编写PHP代码的初学者。从几个小时开始,我正在尝试编写一个脚本,该脚本从两个数据库表中获取结果并显示结果(在循环中)+分页。我无法解决的问题是如果没有结果 - 脚本停止页面执行,它看起来被切成两半。

这是查询:

$query = "SELECT phId FROM photographers WHERE phCity=$row_cities[cityId] UNION SELECT pservOwner FROM phServices WHERE pservOwner = $row_prePhotographer[phId] AND pservService=$row_service[serviceId] LIMIT $redove, $broinastranica";
            $query_params = array();
            try {
                $stmt = $db->prepare($query);
                $result = $stmt->execute($query_params);
            }
            catch(PDOException $ex) {
                die(fusllPageError("Error","System error 103."));
            }
            $row_photographers = $stmt->fetch();
            if(!empty($row_photographers['phId'])) {
do { ... } while($row_photographers = $stmt->fetch());
else {
 echo "<h1>There are no results</h1>
 <p class='"text-center'">Please check again after few days.</p>";
}

你能看一看,说我做错了什么吗?提前谢谢你。

检查第一个选择语句中的 phId 和第二个选择语句中的 pservOwner 是否具有相同的数据类型。

尝试为每个选择语句使用括号。喜欢(从表1中选择ID1)联盟(从表 2 中选择 ID2)

看来解决方案非常简单。在每个 WHERE 语句的值周围使用单引号就可以了。

以下是查询现在的外观:

$query = "SELECT phId FROM photographers WHERE phCity='$row_cities[cityId]' UNION ALL SELECT pservOwner FROM phServices WHERE pservOwner = '$row_prePhotographer[phId]' AND pservService='$row_service[serviceId]' LIMIT $redove, $broinastranica";

谢谢你们的帮助。