0

この 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 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();
4

2 に答える 2

1

行の総数を取得する場合は、fetchColumn関数を使用します。

ここで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();
于 2013-02-15T16:39:03.197 に答える
0

クエリを一度確認してください: 条件を強調表示しましたが、これは 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_ID = $_POST["部屋"];

$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->fetchAll();
于 2013-02-15T15:37:40.853 に答える