Php 在PDO查询中使用计数和内部联接
将此SQL语句作为PDO查询编写的最佳方式是什么?我希望它以数字形式返回查询数Php 在PDO查询中使用计数和内部联接,php,mysql,Php,Mysql,将此SQL语句作为PDO查询编写的最佳方式是什么?我希望它以数字形式返回查询数 SELECT COUNT(*) totalCount FROM ts_room a INNER JOIN ts_roompref b ON a.id = b.room_ID INNER JOIN ts_request c ON b.request_ID = c.roompref_ID WHERE c.day_ID = 1 AN
SELECT COUNT(*) totalCount
FROM ts_room a
INNER JOIN ts_roompref b
ON a.id = b.room_ID
INNER JOIN ts_request c
ON b.request_ID = c.roompref_ID
WHERE c.day_ID = 1 AND c.period_ID = 1
我是这么想的:
$room_ID = $_POST["room"];
$sql = "SELECT COUNT(*) totalCount
FROM ts_room a
INNER JOIN ts_roompref b
ON a.id = b.:room_ID
INNER JOIN ts_request c
ON b.request_ID = c.roompref_ID
WHERE c.day_ID = 1 AND c.period_ID = 1";
$stm = $pdo->prepare( $sql );
$stm->execute( array( ':room_ID' => $room_ID) );
$rows = $stm->fetchAll();
// echo row count here
$count = $stm->rowCount();
请检查您的查询一次:我已经提出了条件ehich你做错了这将被放在where条款
SELECT COUNT(*) totalCount
FROM ts_room a
INNER JOIN ts_roompref b
// ON a.id = b.:room_ID
INNER JOIN ts_request c
ON b.request_ID = c.roompref_ID
WHERE c.day_ID = 1 AND c.period_ID = 1
我猜您的代码将如下所示:
$room\u ID=$\u POST[“room”]
如果要获取总行数,请使用函数 还有一个更正,因为这里使用的是JOIN,所以在ON子句中,不能使用变量值,只能使用列名
$room_ID = $_POST["room"];
$sql = "SELECT COUNT(*) totalCount
FROM ts_room a
INNER JOIN ts_roompref b
ON a.id = b.room_ID
INNER JOIN ts_request c
ON b.request_ID = c.roompref_ID
WHERE c.day_ID = 1 AND c.period_ID = 1 and b.room_ID=:room_ID";
$stm = $pdo->prepare( $sql );
$stm->execute( array( ':room_ID' => $room_ID) );
$rows = $stm->fetchColumn();
PDO与此有什么关系?查询就是一个查询,不管您使用的是什么数据库库。唯一的区别是如何嵌入外部数据(例如,$_POST值)。@MarcB我不100%确定如何呼出行数从文档开始:Cheers@MarcB,我已经更新了代码来显示这一点。
PDOStatement::rowCount-返回受上一条SQL语句影响的行数
如何获得行数?我只是回显$rows吗?
$room_ID = $_POST["room"];
$sql = "SELECT COUNT(*) totalCount
FROM ts_room a
INNER JOIN ts_roompref b
ON a.id = b.room_ID
INNER JOIN ts_request c
ON b.request_ID = c.roompref_ID
WHERE c.day_ID = 1 AND c.period_ID = 1 and b.room_ID=:room_ID";
$stm = $pdo->prepare( $sql );
$stm->execute( array( ':room_ID' => $room_ID) );
$rows = $stm->fetchColumn();