1

エコーが表示されずに困っています。に問題があると思いますwhileが、テーブルはmysqlにあるので正常に動作するはずです。これは私のコードです

    <?php


$sql = $db->prepare('SELECT
            topic_id,
            topic_subject
        FROM
            topics
        WHERE
            topics.topic_id = :topid');
$sql->bindParam(':topid', $_GET['id'], PDO::PARAM_INT); 
$sql->execute();
$result = $sql->rowCount();



        if($result === FALSE){
            echo 'The topic could not be displayed, please try again later.';
        }
        elseif(count($result) === 0){
            echo 'This topic doesn&prime;t exist.';
        }
    else
        {
        while($row = $sql->fetch())
        {
            //display post data
            echo '<table class="topic" border="1">
                    <tr>
                        <th colspan="2">' . $row['topic_subject'] . '</th>
                    </tr>'; ?>

whileトピックが mysql に存在するため、これが表示されるはずです。私が使用している場合、var_dump($sql->errorInfo()); nullarray(3) { [0]=> string(5) "00000" [1]=> NULL [2]=> NULL } は、テストとして mysql でトピックを作成したためです。

4

2 に答える 2

1
$result = $sql->rowCount();

elseif(count($result) === 0){

$result には行数が割り当てられています。ただしcount()、配列内の要素をカウントするように設計されています。説明書より

 If var is not an array or an object with implemented Countable interface, 1 will be returned. There is one exception, if var is NULL, 0 will be returned. 

必要なのは次のとおりだと思います。

elseif($result === 0){

私が考えているのは、クエリからの結果はありませんが、への呼び出しが機能しcount()ていないということです。そのチェックに合格しており、取得するレコードがないため、ループには入りません。

于 2013-07-17T16:28:54.133 に答える