0

今日 PDO を学習したばかりで、PHP/MySQL を使用して学習するために Twitter のクローンを作成している最中です。

これは、データベース内の特定の user_id (Twitter フィードのようなもの) の下のすべてのツイートを表示することになっているコードのスニペットです。

<?php
$all_tweets = showtweets($pdo, $_SESSION['user_id']);
if (count($all_tweets)) {
    foreach($all_tweets as $key => $value) {
?>

<div class="tweet">
    <?php
         echo $key['tweet'] . "<br> 
         Written By: " . $_SESSION['user_id'] . " on " . $key['time'] . "<br>";
    ?>
</div>

<?php
    };
} else {
    echo "You haven't posted anything yet!";
};
?>

これが私のphpコードの関数showtweetsです

function showtweets($pdo, $user_id) {
    $show_tweets_stmt = "SELECT tweet, time FROM tweets WHERE id=:user_id 
                         ORDER BY time DESC";
    $show_tweets = $pdo->prepare($show_tweets_stmt);
    $show_tweets->bindParam(':user_id', $_SESSION['user_id']);
    $show_tweets_execute = $show_tweets->execute();

    if (!$show_tweets_execute) {
        printf("Tweets failed to be retrieved! <br> %s", $pdo->error);
    } else {
        $tweets_array = $show_tweets->fetchAll();
        return $tweets_array; 
    };
}

実行してみましたが、印刷された0isset($all_tweets)をエコーし​​ながらtrueを返しました。count($all_tweets)

関数コードに何か問題があると思いますaddtweets。これに一日中手を出していますが、機能させることができません。

何かアドバイス?どうもありがとう

4

2 に答える 2

1

PHP からisset :

var が存在し、NULL 以外の値を持つ場合は TRUE を返し、それ以外の場合は FALSE を返します。

したがって、あなたの場合、変数$all_tweets が設定されており、値は NULL ではありません。

より具体的には、配列が最初から空であるかどうかを判断する方法に問題があります。が PHP で空であるかどうかを判断するに$all_tweetsは、インターネット、および (主に) 多くの StackOverflow の投稿で (PHP ドキュメントから) を使用することを強くお勧めします。empty()

var が存在し、空でもゼロでもない値を持つ場合、FALSE を返します。それ以外の場合は TRUE を返します。

次のものは空と見なされます。

  • "" (空の文字列)
  • 0 (整数としての 0)
  • 0.0 (浮動小数点として 0)
  • "0" (文字列としての 0)
  • ヌル
  • 間違い
  • array() (空の配列)
  • $var; (変数は宣言されていますが、値はありません)

また、この問題についてさらに読むには、これを調べてください: How to check whether a array is empty using PHP?

于 2013-07-16T03:06:29.713 に答える