[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка в php и misql
denkut
Ошибка:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\home\localhost\www\gbrksite\books.php on line 77

Warning: Division by zero in d:\home\localhost\www\gbrksite\books.php on line 86

Запрос на выборку данных из базы не прошел. Напишите об этом администратору denkutt@mail.ru.
Код ошибки:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

сам php фаил:

PHP
<?php 
include ("blocks/db.php");
$result mysql_query("SELECT title, meta_d, meta_k, text FROM settings WHERe page='books'");
$myrow mysql_fetch_array($result);


if (isset(
$_GET['cat'])) {$cat $_GET['cat']; }
if (!isset(
$cat)) {$cat 1;}

/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|"$cat)) {
exit (
"<p>Неверный формат запроса! Проверьте URL!");
}

$result mysql_query("SELECT * FROM books WHERE id='$cat'");

if (!
$result)
{
echo 
"<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору admin@ruseller.com. <br> <strong>Код ошибки:</strong></p>";
exit(
mysql_error());
}

if (
mysql_num_rows($result) > 0)

{
$myrow mysql_fetch_array($result); 



}

else
{
echo 
"<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php   include ("blocks/head.php");?>



<meta name="description" content=" <?php echo $myrow['meta_d']; ?>" />
<meta name="keywords" content="<?php echo $myrow['meta_k']; ?>" />


<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251" />
<title><?php echo $myrow['title']; ?></title>
<link href="style.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251" /><meta http-equiv="Выберите расширение для паковки" content="text/html; charset=windows-1251" />

</head>
<body background="img/bg.gif"><link rel="shortcut icon"  href="img/ico.jpg" >
<table width="800" border="0" align="center" cellpadding="0" cellspacing="0" class="main_border">
  <?php   include ("blocks/verx.php");?>
  <tr>
    <td><?php   include ("blocks/shapka.php");?></td>
</tr>
  <tr>
    <td><table width="800" border="1" cellpadding="0" cellspacing="0" bordercolor="#25568C" class="main_border1">
      <tr valign="top">
      
      
      
<?php   include ("blocks/lefttd.php");?>   
<td width="480" valign="top" class="books_title" ><p align="center" class="style2 стиль2"><strong>Большой архив интересных книг:</strong></p>


<?

$result7 
mysql_query("SELECT str FROM option"$db);
$myrow7 mysql_fetch_array($result7);
$num $myrow7["str"];
// Извлекаем из URL текущую страницу
@$page $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 mysql_query("SELECT * FROM books WHERE cat='$cat'");
$temp mysql_fetch_array($result00);
$posts $temp[0];
// Находим общее число страниц
$total = (($posts 1) / $num) + 1;
$total =  intval($total);
// Определяем начало сообщений для текущей страницы
$page intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page 0$page 1;
  if(
$page $total$page $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start $page $num $num;
// Выбираем $num сообщений начиная с номера $start    

$result mysql_query ("SELECT id, title, description, author, siz, date, view, mini_img FROM books  WHERE cat='$cat' ORDER BY id LIMIT $start, $num");

if (!
$result)
{
echo 
"<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору denkutt@mail.ru. <br> <strong>Код ошибки:</strong></p>";
exit(
mysql_error());
}

if (
mysql_num_rows($result) > 0)

{
$myrow mysql_fetch_array($result); 

do {

printf ("<table   align='center'  class='books'>
  <tr class='books2' >
    <td class='title10'><p class='books_name'>
    
    <img  class='mini' align='left' src='%s'>
    
    <a href='books_page.php?id=%s'>%s</a></p>
    
    <p class='books_adds'>Дата добавления: %s</p>
    <p class='books_adds'>Автор книги: %s</p>
    <p class='books_adds'>Размер книги: %s</p>
    </td>
  </tr>
  
  
  <tr>
    <td><p><strong>%s</strong></p><p class='post'>Просмотров:%s</p></td>
  </tr> 
</table><p></p>"
,$myrow['mini_img'], $myrow['id'], $myrow['title'], $myrow['date'], $myrow['author'], $myrow['siz'],$myrow['description'],$myrow['view']);

}
while (
$myrow mysql_fetch_array ($result));
}

else
{
echo 
"<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
?></td> 
  <?php   include ("blocks/right.php");?>        

      </tr>
    </table></td>
  </tr>
  <tr>
<?php   include ("blocks/futer.php");?> 
  </tr>
</table>

</body>
</html>


Пожалуйста помогите! зарание Спасибо!



Спустя 24 минуты, 46 секунд (12.05.2009 - 21:15) anonymouse написал(а):
PHP
$result7 = mysql_query("SELECT str FROM option", $db);
$myrow7 = mysql_fetch_array($result7);


ну и че ? слабо было убрать лишний код из запроса QUERY ?
Да и что такое у тебя $DB - откуда оно у тебя взялось ?

А если так интересно ?

PHP
$result7 = mysql_query("SELECT str FROM option");
$myrow7 = mysql_fetch_array($result7);




зашита от SQL'Injection -

PHP
if (isset($_GET['cat'])) {$cat $_GET['cat']; }
if (!isset(
$cat)) {$cat 1;}


если принимаешь 100 % тип INT проводи $cat через intval()

Хотя смотрю было легче ломать себе голову с регулярными выражениями =)
Короче.

Твой код - я лично так никогда не пишу.

Спустя 6 минут, 1 секунда (12.05.2009 - 21:21) denkut написал(а):
Цитата
ну и че ? слабо было убрать лишний код из запроса QUERY ?

А если так интересно ?

я вас не понял , просто убрать $db, я пробывал, та же ошибка!

Спустя 8 минут, 17 секунд (12.05.2009 - 21:29) denkut написал(а):
Цитата
зашита от SQL'Injection -
PHP
if (isset($_GET['cat'])) {$cat = $_GET['cat']; }
if (!isset($cat)) {$cat = 1;}



если принимаешь 100 % тип INT проводи $cat через intval()

Хотя смотрю было легче ломать себе голову с регулярными выражениями =)
Короче.

Твой код - я лично так никогда не пишу.


исправь пожалуйста мой код, очень надо, 2 дня мучаюсь!

Спустя 1 час, 56 минут, 28 секунд (12.05.2009 - 23:26) anonymouse написал(а):
denkut
Если пожалуйста - то удовольствием !!!
PHP
$result7 = mysql_query("SELECT str FROM option", $db);
$myrow7 = mysql_fetch_array($result7);


Замени на

PHP
$result7 = mysql_query("SELECT str FROM option");
$myrow7 = mysql_fetch_array($result7);




Далее


PHP
if (isset($_GET['cat'])) {$cat = $_GET['cat']; }
if (!isset($cat)) {$cat = 1;}


замени на



PHP
if (isset($_GET['cat'])) {$cat = intval($_GET['cat']); }
if (!isset($cat)) {$cat = 1;}


И убери

PHP
/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|"$cat)) {
exit (
"<p>Неверный формат запроса! Проверьте URL!");
}



Должно работать - если что-то не так - скинь заново код и места ошибки !
Но думаю их быть не должно!


П.С.
PHP
include ("blocks/db.php");

замени на
PHP
include_once('blocks/db.php');

И я надеюсь в нем ты осуществил подключение к БД.

На этом все)

Спустя 11 минут, 19 секунд (12.05.2009 - 23:37) denkut написал(а):
Цитата
anonymouse

все те же ошибки sad.gif

Спустя 1 час, 5 минут, 56 секунд (13.05.2009 - 00:43) anonymouse написал(а):
denkut

Дай код ошибки и конкретно строку.

Спустя 6 часов, 26 минут, 22 секунды (13.05.2009 - 07:09) denkut написал(а):
anonymousе
а где взять код ошибки?
вот все что выдает

Большой архив интересных книг:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\home\localhost\www\gbrksite\books.php on line 73

Warning: Division by zero in d:\home\localhost\www\gbrksite\books.php on line 82

Запрос на выборку данных из базы не прошел. Напишите об этом администратору denkutt@mail.ru.
Код ошибки:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

строка 73( $myrow7 = mysql_fetch_array($result7)wink.gif
строка 82 ( $total = (($posts - 1) / $num) + 1;)


Спустя 6 часов, 5 минут, 6 секунд (13.05.2009 - 13:14) anonymouse написал(а):
Короче я не знаю что у тебя там с БД но все ошибки у тебя с таблицей option не понятно ... прореви правильно ли написаны все имена и есть ли они в БД проверь файл конэкта.



П.С. Я просил скинуть код чтоб увидеть что ты там на химичил!


Проверь БД ! Имена к чему подключаешься - имена таблиц / строк !

Спустя 1 час, 35 минут, 4 секунды (13.05.2009 - 14:50) glock18 написал(а):
Алло. Это значит, что запрос не выполнен правильно.

Судя по тому, что выборка ведется из некой таблицы option, которая судя по всему еще является ключевым словом в mysql, таблицу нужно взять в обратные кавычки:
SQL
`option`


PS: использовать include_once не советую повсеместно. только, если вы точно уверены, что этот файл может быть подключен в этом месте во-второй или более раз, потому include_once и require_once работают медленнее соответствующих фукнций без once.

Спустя 2 часа, 59 минут, 50 секунд (13.05.2009 - 17:49) denkut написал(а):
всем спасибо!

Спустя 1 год, 11 месяцев, 29 дней, 14 часов, 42 минуты, 26 секунд (13.05.2011 - 08:32) linker написал(а):
Хороший код, чтобы показать как примерно надо (с вариациями)
$cat = isset($_GET['cat']) ? (integer)$_GET['cat'] : 0;

...


define('DEFAULT_NUM', 10);
$result7 = mysql_query("SELECT `str` FROM `option`");
if ($myrow7 = mysql_fetch_assoc($result7))
$num = $myrow7["str"];
else
$num = DEFAULT_NUM;

...


$result = mysql_query("SELECT `id`, `title`, `description`, `author`, `siz`, `date`, `view`, `mini_img` FROM `books` WHERE `cat`='$cat' ORDER BY `id` LIMIT $start, $num");
while($myrow = mysql_fetch_assoc($result))
{
...
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.