0

今天刚刚学习了 PDO,正在制作 Twitter 克隆以学习使用 PHP/MySQL。

这是一段代码,它应该显示数据库中某个 user_id 下的所有推文(有点像推特提要)。

<?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; 
    };
}

我尝试运行isset($all_tweets),它返回 true,同时回显count($all_tweets)打印 0。

我认为我的addtweets函数代码有问题,我整天都在涉足这个问题,但我无法让它工作。

有什么建议吗?非常感谢

4

2 回答 2

1

从 PHP,isset

如果 var 存在并且值不是 NULL,则返回 TRUE,否则返回 FALSE。

因此,在您的情况下,变量$all_tweets 已设置,并且值不为 NULL。

更具体地说,您的问题在于如何确定数组一开始是否为空。要确定 PHP 中是否$all_tweets- 互联网,以及(主要)很多 StackOverflow 帖子强烈建议使用empty(),其中(来自 PHP 文档):

如果 var 存在并且具有非空、非零值,则返回 FALSE。否则返回 TRUE。

以下内容被认为是空的:

  • ""(一个空字符串)
  • 0(0 为整数)
  • 0.0(0 作为浮点数)
  • "0" (0 作为字符串)
  • 无效的
  • 错误的
  • array()(一个空数组)
  • $var; (声明的变量,但没有值)

此外,有关此问题的更多阅读,请检查以下内容: 如何使用 PHP 检查数组是否为空?

于 2013-07-16T03:06:29.713 回答
0

如果要查看数组是否为空,则使用empty($array) isset($array)返回 true,因为存在空数组。

于 2013-07-16T03:02:27.933 回答