PHP 和 MySQL - PHP 警告有帮助吗?

标签 php mysql

好吧,首先让我说我的脚本工作正常,它只是在数据库中没有任何内容时显示这些警告。我想要的是即使数据库中没有任何内容,警告也会消失。

如何解决这个问题?我需要更改代码的哪一部分?

这是警告。

Warning: ksort() expects parameter 1 to be array, null given on line 24

Warning: array_values() [function.array-values]: The argument should be an array on line 38

Warning: Wrong parameter count for min() on line 38

Warning: array_values() [function.array-values]: The argument should be an array on line 39

Warning: Wrong parameter count for max() on line 39

Warning: Invalid argument supplied for foreach() on line 49

下面是完整的代码。

<?php

require_once ('./mysqli_connect.php');


$link = mysqli_connect("localhost", "root", "", "sitename");

function tag_info($link) {

$page = "3";


$query = "SELECT tags.tag, 
                       COUNT(questions_tags.tag_id) 'num' 
                       FROM questions_tags 
                       JOIN tags ON tags.id = questions_tags.tag_id 
                       WHERE questions_tags.users_questions_id = '$page' 
                       GROUP BY tags.tag 
                       ORDER BY num DESC";
    if ($result = mysqli_query($link, $query)) {
        while($row = mysqli_fetch_array($result)) {
            $arr[$row['tag']] = $row['num'];
        }
        ksort($arr);
        return $arr;
    }
    return array();
}


function tag_cloud($link) {

$min_size = .8;
$max_size = 1.5;

$tags = tag_info($link);

$minimum_count = min(array_values($tags));
$maximum_count = max(array_values($tags));
$spread = $maximum_count - $minimum_count;

if($spread == 0) {
    $spread = 1;
}

$cloud_html = '';
$cloud_tags = array();

foreach ($tags as $tag => $count) {
$size = $min_size + ($count - $minimum_count) * ($max_size - $min_size) / $spread;
$cloud_tags[] = '<a style="font-size: '. $size . 'em'
. '" class="tag_cloud" href="http://www.example.com/tags/' . $tag .'/'
. '" title="\'' . $tag . '\' returned a count of ' . $count . '">'
. htmlspecialchars(stripslashes($tag)) . '</a>';
}
$cloud_html = join("\n", $cloud_tags) . "\n";
return $cloud_html;

}

?>

@Franz 现在我收到这些警告。

Warning: min() [function.min]: Array must contain at least one element on line 39

Warning: max() [function.max]: Array must contain at least one element on line 40

最佳答案

这应该有效:您忘记了没有返回行的情况(在您的代码中):

if ($result = mysqli_query($link, $query))
{
    $arr = array();
    while($row = mysqli_fetch_array($result))
    {
        $arr[$row['tag']] = $row['num'];
    }
    ksort($arr);
    return $arr;
}
return array()

关于PHP 和 MySQL - PHP 警告有帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1873693/

相关文章:

php - PDO 预处理语句返回空数组

mysql - 如何从 CloudBees Jenkins 访问 MySQL?

php - 在 PHP/MySQL 查询中访问动态值

php - 如何跟踪 IP 以阻止恶意用户?

php - 如何按标题和所有者列出类别

php - 两个数据库之间的数据库关系

php - 在 Linux 上,我想停止对特定 Windows 服务器的身份验证,该服务器将使用它来使用 Sendmail 发送邮件

mysql - 从多对多中选择问题

mysql - 连接与子查询来计算嵌套对象的数量

mysql - 如何更改列的数据类型,这样日期就不会错了?