PHP和MySQL - PHP警告有帮助吗?
问题描述:
好吧,首先让我只说我的脚本工作正常,它只是在数据库中没有任何内容时显示这些警告。我想要的是即使数据库中没有任何内容,警告也会消失。PHP和MySQL - PHP警告有帮助吗?
如何纠正这个问题?我需要更改哪部分代码?
这里是警告。
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()
答
替换:
ksort($arr);
return $arr;
有了:
if(empty($arr)){
return array();
}
ksort($arr);
return $arr;
然后,可以肯定的是:
$tags = tag_info($link);
有:
$tags = tag_info($link);
if(empty($tags)){
return '';
}
+0
嘿,工作。 – SlapThiS 2009-12-09 13:04:35
我真的不知道该向谁奖励?你们两个都帮助了我。 – SlapThiS 2009-12-09 13:05:22
我第一次:P我不在乎,但。给他信贷,他比我更需要它;) – Franz 2009-12-09 15:51:34