Нужна помощь в преобразовании моего сценария PHP & MySQL из mysql в mysqli?

0

Мой script работал раньше, но когда я сменил все теги mysql на mysqli, все перестало работать. Может кто-нибудь, пожалуйста, помогите мне сделать работу script.

Вот script.

<?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>
  • 0
    Предполагая, что вы не получаете никаких очевидных сообщений об ошибках, которые можно исправить. Брось die('Made it to here!'); в сценарий где-то рядом с вершиной, а затем постепенно переместите его вниз. Это может помочь, если вы не знаете, где что-то ломается.
Теги:

1 ответ

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. p >

И [mysqli_error], что вы можете определить, была ли ошибка во время выполнения запроса, также принимает идентификатор ссылки в качестве параметра.


В качестве побочного элемента: при чтении документации для mysqli_* обратите внимание, что это расширение имеет два API:

  • объект ориентирован
  • и процедурный стиль

Функции, использующие процедурный стиль, часто требуют больше параметров (особенно идентификатор ссылки), чем методы при использовании стиля OO...

  • 0
    Я пробовал это, но это все еще не работало :(
  • 0
    @SlaPtHiS: я несколько раз редактировал свой ответ, чтобы добавить некоторую информацию: в основном, вам нужно проверять каждый вызов, который вы делаете для каждой функции mysqli_ * - и просмотр руководства действительно поможет вам ;-)
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню