Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
 
 автор: dimonich2004   (01.02.2008 в 01:25)   письмо автору
 
 

код вроде правелен:
вызываеццо include'ОМ

<?php 
include ("BLOCKS/connect.php");

if (isset(
$_GET['id_pozicii'])) {$id=$_GET['id_pozicii'];}

echo 
$_GET['id_pozicii'];
echo 
$id;

$res=mysql_query("SELECT * FROM pozicii WHERE id_pozicii='$id'");
$my=mysql_fetch_array($res);

do
{

echo 
$id;

}
while (
$my=mysql_fetch_array($res));
?>

Выдаёт ошибку при вызове:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\TEHNOSTANDART\BLOCKS\read-tovar.php on line 10

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\TEHNOSTANDART\BLOCKS\read-tovar.php on line 18

   
 
 автор: divbyzero   (01.02.2008 в 01:27)   письмо автору
 
   для: dimonich2004   (01.02.2008 в 01:25)
 

проверил данные возвращаются? В коде не вижу

   
 
 автор: dimonich2004   (01.02.2008 в 01:34)   письмо автору
 
   для: divbyzero   (01.02.2008 в 01:27)
 

<?php 
include ("BLOCKS/connect.php");

if (isset(
$_GET['id_pozicii'])) {$id=$_GET['id_pozicii'];}

$res=mysql_query("SELECT * FROM pozicii WHERE id_pozicii='$id'");
$my=mysql_fetch_array($res);

do
{

printf ("<a href='tovar2.php?id_pozicii=%s'</a><p class='tovar'>%s</p>",$my["id_pozicii"],$my["poziciya"]);

}
while (
$my=mysql_fetch_array($res));
?>

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\TEHNOSTANDART\BLOCKS\read-tovar.php on line 8



Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\TEHNOSTANDART\BLOCKS\read-tovar.php on line 16

   
 
 автор: jbs   (01.02.2008 в 02:22)   письмо автору
 
   для: dimonich2004   (01.02.2008 в 01:34)
 

ну так правельно, выж дважды выполняете $my=mysql_fetch_array($res);
а результат возращается единственный (по id)
уберите первую строку $my=mysql_fetch_array($res); но оставте её в while

или так:

<?php  
$res
=mysql_query("SELECT * FROM pozicii WHERE id_pozicii='$id'"); 
while(
$my=mysql_fetch_array($res)) {
.... 

?>

   
 
 автор: Freddie_X   (01.02.2008 в 02:28)   письмо автору
 
   для: jbs   (01.02.2008 в 02:22)
 

А у меня, если дважды обращаться к mysql_fetch_array от одного и того же запроса, то в цикле просто отсутствует первая запись в массиве. Как буд-то её в БД нет... =)

А тут, возможно, нужно убрать кавычки вокруг $id
$res=mysql_query("SELECT * FROM pozicii WHERE id_pozicii=$id"); 

если, конечно, $id - числовое значение.

   
 
 автор: jbs   (01.02.2008 в 02:32)   письмо автору
 
   для: Freddie_X   (01.02.2008 в 02:28)
 

>А у меня, если дважды обращаться к mysql_fetch_array от одного и того же запроса, то в цикле просто отсутствует первая запись в массиве. Как буд-то её в БД нет... =)

> а результат возращается единственный (по id)

тоесть при первом запросе, данные просто пропадают, а следующих несуществует.
тут-то ошибка и вылетает.

   
 
 автор: Антоха   (01.02.2008 в 02:41)   письмо автору
 
   для: jbs   (01.02.2008 в 02:32)
 

> jbs
С кодом всё впринципе нормально, только правда незачем делать два mysql_fetch_array().
>demonich2004
Помоему у Вас здесь ошибка в самом запросе:
<? $res=mysql_query(\"SELECT * FROM pozicii WHERE id_pozicii='$id'"); ?>

Проверьте еще разок, точно ли у Вас есть:
Таблица - pozicii
или
Столбец - id_pozicii

   
 
 автор: dimonich2004   (01.02.2008 в 03:12)   письмо автору
 
   для: Антоха   (01.02.2008 в 02:41)
 

В таблице Три поля
1-id
2-id-pozicii
3-poziciya_t

   
 
 автор: dimonich2004   (01.02.2008 в 03:14)   письмо автору
 
   для: dimonich2004   (01.02.2008 в 03:12)
 

Я не уж спать даже немогу !
Может есть альтернатива Этому коду?

   
 
 автор: jbs   (01.02.2008 в 03:35)   письмо автору
 
   для: dimonich2004   (01.02.2008 в 03:12)
 

буду краток.

WHERE id_pozicii
id-pozicii

p.s. тоже неспится

   
 
 автор: Антоха   (01.02.2008 в 03:41)   письмо автору
 
   для: jbs   (01.02.2008 в 03:35)
 

>буду краток.
>WHERE id_pozicii
>id-pozicii
Скорее всего у demonic2004 это была опечатка, т.к. в mysql синтаксис не позволяет создавать с тире. Я конечно мало понимаю, может в каких версиях и можно, но лично у меня 5.1, в ней нельзя.

   
 
 автор: dimonich2004   (01.02.2008 в 03:52)   письмо автору
 
   для: Антоха   (01.02.2008 в 03:41)
 

Убрал тире Ругается всеравно на теже АБшибки! =(((

   
 
 автор: dimonich2004   (01.02.2008 в 03:16)   письмо автору
 
   для: Антоха   (01.02.2008 в 02:41)
 

ругаеццо на строку:
$my=mysql_fetch_array($res);

   
 
 автор: Антоха   (01.02.2008 в 02:45)   письмо автору
 
   для: jbs   (01.02.2008 в 02:32)
 

>тоесть при первом запросе, данные просто пропадают, а следующих несуществует.
>тут-то ошибка и вылетает.
Ошибок не должно быть, если данных больше нет.

   
 
 автор: jbs   (01.02.2008 в 02:47)   письмо автору
 
   для: Антоха   (01.02.2008 в 02:45)
 

>Ошибок не должно быть, если данных больше нет.
согласен, просто вернёт false, туплю по чёрному
усё, я спать!

   
 
 автор: dimonich2004   (01.02.2008 в 02:46)   письмо автору
 
   для: jbs   (01.02.2008 в 02:32)
 

Сделал так:

<?php 
include ("BLOCKS/connect.php");

if (isset(
$_GET['id_pozicii'])) {$id=$_GET['id_pozicii'];}


$res=mysql_query("SELECT * FROM pozicii WHERE id_pozicii=$id");
$my=mysql_fetch_array($res);

do
{

printf ("<p>%s</p><p class='tovar'>%s</p>",$my["id_pozicii"],$my["poziciya"]);

}
while (
$my);
?>

Всеравно ругаеццо!
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampplite\htdocs\TEHNOSTANDART\BLOCKS\read-tovar.php on line 8

=-=-=-=-=-==-=-=-
на той странице откуда идё вызов этого скрипта
есть что-то похожее в коде но другие переменные!
это может както влиять?

Код со страницы вызывающей скрипт
==============================

<?php
    
include ("BLOCKS/connect.php");
    
$result=mysql_query("SELECT title,meta_d,meta_k,texts FROM settings WHERE page='tovar'");
    
$myrow=mysql_fetch_array($result);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="description" content="<?php echo $myrow['meta_d']; ?>">
<meta name="keywords" content="<?php echo $myrow['meta_k']; ?>">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $myrow ['title']?></title>
<link href="STYLE/Style.css" rel="stylesheet" type="text/css">
<link href="STYLES/Style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width="690" border="0">
  <tr>
    <td align="center" valign="top"><img src="IMAGE/logotip.GIF" width="690" height="80" class="main_border"></td>
  </tr>
  <tr>
    <td height="270" valign="top"><table width="100%" height="272" border="0">
      <tr>
        <td width="21%" height="250" align="left" valign="top" class="left">
        <?php include("BLOCKS/left-menu.php");?>
        </td>
        <td width="79%" align="center" valign="top">
        <?php echo $myrow ['texts'];?>
        


        
        <?php include("BLOCKS/read-tovar.php");?>
        </td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td height="22" align="center" valign="top" background="IMAGE/footer.GIF" class="main_border">Техностандарт 2008</td>
  </tr>
</table>
</body>
</html>

   
 
 автор: Антоха   (01.02.2008 в 03:36)   письмо автору
 
   для: dimonich2004   (01.02.2008 в 02:46)
 

Попробуй тогда так (убрав всё лишнее):
<?php  
  
include "BLOCKS/connect.php"
  if(isset(
$_GET['id_pozicii'])) $id $_GET['id_pozicii'];
  
$res mysql_query("SELECT * FROM pozicii WHERE id_pozicii=$id"); 
  if(!
$res) {
    echo 
"Ошибка!<br>"
    
echo mysql_error();
  } 
?>

Если получил "Ошибка!" - значит, дело в самом запросе.
mysql_error() должна вывести:
Table 'имя_базы.pozicii' doesn't exist - т.е. таблица pozicii не существует!
или
Unknown column 'id_pozicii' in 'where clause' - неизвестный столбец, т.е. столбца с именем id_pozicii несуществует!

Попробуй...

   
 
 автор: dimonich2004   (01.02.2008 в 03:44)   письмо автору
 
   для: Антоха   (01.02.2008 в 03:36)
 

Ошибка!
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

   
 
 автор: jbs   (01.02.2008 в 03:51)   письмо автору
 
   для: dimonich2004   (01.02.2008 в 03:44)
 

$id = $_GET['id_pozicii'];
а где ты id_pozicii методом get передаёш? <?php include("BLOCKS/read-tovar.php");?>

   
 
 автор: dimonich2004   (01.02.2008 в 03:52)   письмо автору
 
   для: jbs   (01.02.2008 в 03:51)
 

С другой страныцы идёт сцылка на другую страницу которая вызывает этот скрипт

СКРИП ГЕНЕРИРУЕТ СПИСОК С СЦЫЛКАМИ: на другую страницу которая вызывает это проблемный скрипт
<?php 
include ("BLOCKS/connect.php");
$result=mysql_query("SELECT * FROM tovar");
$myrow=mysql_fetch_array($result);
  
do
{
printf ("<a href='tovar2.php?id=%s'</a><p class='tovar'>%s</p>",$myrow["id_tovar"],$myrow["name_tovar"]);
}
while (
$myrow=mysql_fetch_array($result));
?>

   
 
 автор: jbs   (01.02.2008 в 03:55)   письмо автору
 
   для: dimonich2004   (01.02.2008 в 03:52)
 

вот теперь, я точно пшёл спать и тебе советую 8)

   
 
 автор: dimonich2004   (01.02.2008 в 03:58)   письмо автору
 
   для: jbs   (01.02.2008 в 03:55)
 

Ну спасиб за отклик... Да наверно пойду посплю в 7 на работу вставать!!!

   
 
 автор: dimonich2004   (01.02.2008 в 03:59)   письмо автору
 
   для: dimonich2004   (01.02.2008 в 03:52)
 

В Этом скрипте не на чего не ругаеццо!!!
Он копия того только с другими переменными...

   
 
 автор: jbs   (01.02.2008 в 04:08)   письмо автору
 
   для: dimonich2004   (01.02.2008 в 03:59)
 

ну ёёё...

короче, незабывай про mysql_error()
и сделай какой-нить слой для отладочной инфы

типа:
$qstr = "SELECT ....";
$res = mysql_query($qstr) or die("ошибка: ".mysql_error());

echo '<div><h3>$qstr</h3></div>';

   
 
 автор: Freddie_X   (01.02.2008 в 10:45)   письмо автору
 
   для: jbs   (01.02.2008 в 04:08)
 

Попробуй задать ID на нужное тебе значение вручную в скрипте:
<?php
...
$id=666;
...
?>

   
 
 автор: mihdan   (01.02.2008 в 11:09)   письмо автору
 
   для: dimonich2004   (01.02.2008 в 01:25)
 


<?php 
include ("BLOCKS/connect.php");

$id = (isset($_GET['id_pozicii'])) ? (int)$_GET['id_pozicii'] : null;

if (
$id) {
    
$res mysql_query("SELECT * FROM `pozicii` WHERE `id_pozicii`=$id") or die(mysql_error());
    if (
mysql_num_rows($res) > 0) {
        while(
$my mysql_fetch_array($res)) {
            echo 
$my['id_pozicii'].'<br />';
        }
    }
}
?> 

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования