2015-09-24 2 views
0

Мне действительно трудно найти ошибку в моем следующем коде. Кажется, что весь код правильный, но у меня есть эта ошибка предупреждения каждый раз, когда я пытаюсь запустить страницу. Кто-нибудь имеет хорошие знания о том, как решить эту проблему? Да, я проверил соединение, и это нормально, и таблица, называемая событием, существует с event_id на сервере базы данных. Заранее спасибо.Mysql_result() ожидает параметр 1 ПРЕДУПРЕЖДЕНИЕ

Код генерирует записи из базы данных и разделяет его в соответствии с номером страницы. Я установил 1 запись на страницу.

Внимание: mysql_result() ожидает параметр 1, чтобы быть ресурсом, логический приведены в /Applications/XAMPP/xyz/xyz/xyz/event.php на линии 89

<?php 
$link = mysql_connect('localhost', '#', '#'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
          } 
$per_page = 1; 

$pages_query = mysql_query("SELECT count(event_id) FROM event ORDER BY event_date"); 
$pages = ceil(mysql_result($pages_query, 0)/$per_page); 
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1; 
$start = ($page - 1) * $per_page; 

$query = mysql_query("SELECT * FROM event LIMIT $start, $per_page"); 
         while ($query_row = mysql_fetch_assoc($query)) { 
            $event_name = $query_row['event_name']; 
            $event_info = $query_row['event_info']; 
?> 

линия 89 является

$pages = ceil(mysql_result($pages_query, 0)/$per_page); 
+1

Во имя Бога, пожалуйста, прекратите использовать функции _deprecated_ mysql. – user5173426

+1

Вы получаете эту ошибку, потому что ваш запрос не удался. Вы предполагаете, что это работает, но 'mysql_query' возвращает логическое значение false, которое вы передаете непосредственно в' mysql_result'. Проверьте, что такое возвращаемое значение, и используйте 'mysql_error', чтобы узнать, в чем проблема. – andrewsi

ответ

1

Первое:

Каждая функция S торги с mysql_ вместо mysqli_ устарели.

Это значит, что вы не должны использовать их. Это означает, что ваши скрипты будут перегружены, когда эти функции будут удалены, что произойдет очень скоро.

Это было очень, очень долгое время, поскольку эти функции считались наихудшей практикой. Нет никакого оправдания, чтобы когда-либо использовать эти функции сегодня.

Второе:

mysql_query() возвращает логическое значение FALSE, если запрос не удается.

Ваша проблема возникает в строке выше. Выясните, почему $pages_query = mysql_query("SELECT count(event_id) FROM event ORDER BY event_date"); не работает, и ваш скрипт будет работать.

Третье:

Переключитесь на mysqli_ функций сегодня.

+0

Не рекомендуется использовать mysqli для новичков. Они никогда не будут использовать параметризацию (потому что это слишком утомительно). И, судя по тем вопросам, которые мы получаем после этого, получившийся код будет повсеместно выглядеть хуже. – mario

+0

@Ghedipunk, спасибо за совет –

1

Вы забыли использовать mysql_select_db($database_name), чтобы выбрать базу данных после mysql_connect().

Таким образом, mysql_query() не удалось, и вернулся false, и, следовательно, mysql_result() получил логическое вместо результата набора-ресурс, который, в свою очередь, производится сообщение, которое вы видите.


Тем не менее, комментарии о устаревании расширения MySQL (в пользу MySQLi или PDO) очень справедлив.

+0

спасибо, что заметили базу данных. Я попробую еще раз –

0

Давайте держать это осуждается ради понимания, Попробуйте это:

<?php 
$host = "localhost"; 
$username = "your_username_here"; 
$password = "your_pass_here"; 
$dbname = "your_db_name_here"; 

$con = mysql_connect($host, $username, $password) or die ("Could not connect to Server"); 
$db = mysql_select_db($dbname, $con) or die ("Could not connect to database: $dbname"); 

$per_page = 1; 

$pages_query = mysql_query("SELECT count(event_id) FROM event ORDER BY event_date"); 
$pages = ceil(mysql_result($pages_query, 0)/$per_page); 
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1; 
$start = ($page - 1) * $per_page; 

$query = mysql_query("SELECT * FROM event LIMIT $start, $per_page"); 

     while ($query_row = mysql_fetch_assoc($query)) { 
      $event_name = $query_row['event_name']; 
      $event_info = $query_row['event_info']; 
     } 
?> 

Примечание: Если вы поняли это хорошо, я призываю вас, чтобы перейти к любой MySQLi или PDO.

Смежные вопросы