需要帮助转换我的PHP& MySQL脚本从mysql到mysqli?

时间:2009-12-05 13:58:55

标签: php mysql

我的脚本之前正在工作,但当我将所有mysql标签更改为mysqli时,一切都停止了工作。有些人可以帮助我让脚本工作。

这是脚本。

<?php

$db_host = "localhost";
$db_user = "root";
$db_pass = "";
$db_name = "sitename";

mysqli_connect($db_host, $db_user, $db_pass) or die(mysqli_error());
mysqli_select_db($db_name);

function tag_info() {

$page = "3";.
$result = mysqli_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");
while($row = mysqli_fetch_array($result)) {
$arr[$row['tag']] = $row['num'];
}
ksort($arr);
return $arr;
}

function tag_cloud() {

$min_size = .8;
$max_size = 1.5;

$tags = tag_info();

$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;

}

?>

<div id="wrapper">
<?php print tag_cloud(); ?>
</div>

1 个答案:

答案 0 :(得分:3)

mysql_*转换为mysqli_*并非 简单:您应该快速查看手册; - )

例如,你会看到mysqli_query正在等待两个参数,程序风格:

mixed mysqli_query  ( mysqli $link  , string $query  [, int $resultmode  ] )

这意味着你必须传递链接标识符(由mysqli_connect返回)作为第一个参数 - 而SQL查询作为第二个参数传递,而不是第一个参数那样。


同样代表mysqli_select_db,btw:

bool mysqli_select_db  ( mysqli $link  , string $dbname  )

也许还有其他功能:我没有查看你正在使用的每个功能的手册。


另一个问题:在检查是否已成功建立连接(呼叫mysqli_connect)时,您不应使用mysqli_error,而应使用专用功能mysqli_connect_error

和[mysqli_error],您可以确定在执行查询期间是否存在错误,也将链接标识符作为参数。


作为旁注:在阅读mysqli_*的文档时,请注意此扩展程序有两个API:

  • 面向对象
  • 和程序风格

使用过程样式的函数通常需要更多参数(尤其是链接标识符),而不是使用OO样式的方法...