0

:cat_id の値は 9 で、:tlk_id の値は 3 です。手動で入力すると、目的の結果で実行されますが、それらをバインドした後、行数はゼロになります。

<?

   $sql = ("
       SELECT
           p.post_id as sn,
           p.subject,
           p.username,
           COUNT(thread_id)-1 AS responses,
           MAX(DATE_FORMAT(p.date_posted,'%e-%b-%y %l:  %i    %p')) AS first,
           MAX(DATE_FORMAT(t.date_posted,'%e-%b-%y %l:%i %p')) AS last
       FROM
           posts AS p
       INNER JOIN
           threads AS t 
       USING 
           (post_id) 
       INNER JOIN 
           register AS u 
       ON
           p.username = u.username
       WHERE 
           t.category_id =:cat_id
       AND
           p.category_id =:cat_id
       AND
           t.forum_id = :tlk_id
       AND
           p.forum_id = :tlk_id
       GROUP BY
           (t.post_id)
       ORDER BY
           last DESC
       LIMIT $start,$display
    ");

    $sth = $dbh->prepare($sql);
    $sth->bindParam(':tlk_id',$tlk_id);
    $sth->bindParam(':cat_id',$cat_id);

    $r =  $sth->execute();
    $count = $sth->rowCount();
    echo $count;
?>
4

2 に答える 2

0

これを行うとどうなりますか:

$tlk_id = 3;
$cat_id = 9;

$sth = $dbh->prepare($sql);
$sth->bindParam(':tlk_id',$tlk_id);
$sth->bindParam(':cat_id',$cat_id);

bindParamは2番目のパラメーターとして参照を想定しているため、変数に値を割り当てています。

于 2012-10-10T19:50:14.147 に答える
0

エラーから:

無効なパラメータ番号:パラメータ..。

すべてのパラメーターが処理されているわけではないことがわかります。したがって、この場合は4つのパラメーターを追加できます。

$sql = "SELECT 
        .....
       WHERE 
           t.category_id =:cat_id_1
       AND
           p.category_id =:cat_id_2
       AND
           t.forum_id = :tlk_id_1
       AND
           p.forum_id = :tlk_id_2
      ....
    ";

    $sth = $dbh->prepare($sql);
    $sth->bindParam(':tlk_id_1',$tlk_id);
    $sth->bindParam(':tlk_id_2',$tlk_id);
    $sth->bindParam(':cat_id_1',$cat_id);
    $sth->bindParam(':cat_id_2',$cat_id);
于 2012-10-10T19:50:39.823 に答える