SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.01.2012 15:04:32

Vyacheslav
Участник
Зарегистрирован: 24.01.2012
Сообщений: 3

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Здравствуйте! С MySql'ем опыта работы мало, поэтому объясню, как смогу :-)
Достался по работе небольшой сайт с БД от уволившегося программиста. Назначение - корректировка списков пользователей Автоматизированной Системы Управления(АСУ), а также их прав. авторизуясь на главной странице, я попадаю на страницу 123.php, на которой отображается кликабельная таблица со списком служб и подразделениями(скрин прилагаю.). И вот на этой самой странице, при клике на некоторые из значений выполняется запрос и мне выдается список пользователей также в виде таблицы, отображает все корректно, но при этом вверху страницы выдает следующее:

Не удалось выполнить запрос по причине: 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

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in H:\home\nuke\www\asrb\123.php on line 25

Начитавшись интернетов, добавил в проблемное место кода(изначально этого в коде не было):

if (!$result) echo "Не удалось выполнить запрос по причине: ".mysql_error();

дабы выявить причину. Много где читал про получившийся результат, но решения не нашел

Сам код:

[syntax=php] <? session_start();

?>

<HTML>
<HEAD>
<TITLE>Web-список АС РБ</TITLE>
<link rel=stylesheet href='css/v_gr.css' type='text/css'>
</HEAD>
<BODY>
<?
if (session_is_registered("status"))
{
    @$db = mysql_pconnect("localhost", "root", "");
    if (!$db)
    {
        echo "Error: Could not connect to database. Please try again later.";
        exit;
    }
    mysql_select_db("asrb_user");
    $r_z = "Select * from NOD where id=".$ter;
    $res_z = mysql_query($r_z);
if (!$result) echo "Не удалось выполнить запрос по причине: ".mysql_error();
    if (mysql_num_rows($res_z)!=0)
    {
        while ($rr_z=mysql_fetch_array($res_z))
        {
            $teritoria = $rr_z["nod"];    //$rr_z["nod"]." ".$rr_z["nod_full"];
            $ter11 = $rr_z["t"];
        }
    }
//заносит В БД изменения
    if($snos==34)
    {
        $query =  "delete from tabel1 where id=".$id;
        $result = mysql_query ($query);
        if(!$result)die("Произошла ошибка при запросе: <b>");
    }
    if(($status==0 || $status==$ter11) && ($edit=='yes'))
    {
        if($prava_vid==1)
            {
                $query =  "UPDATE tabel1 SET name_user = '".$fio."' ,  tip_pr = '".$predpr."' ,  NOD = '".$ter."' ,  tel  = '".$tel."' ,  mail = '".$mail."' ,  prim = '".$prim."'  , doljnost = '".$dol."' , log = '".$log."' , pass = '".$pas."' ,  prava = '".$prav."' ,  tt = '".$tt."'  WHERE id = '".$id."' ";
                $result = mysql_query ($query) ;    
                $edit='no';
                print "<script language='JavaScript'>
                sss='123.php?'+'predpr='+'"
.$predpr."'+'&ter='+'".$ter."'+'&edit='+'".$edit."';
                top.location.assign(sss);        
                </script>"
;
            }
        else
            {        
                $query =  "UPDATE tabel1 SET name_user = '".$fio."' ,  tip_pr = '".$predpr."' ,  NOD = '".$ter."' ,  tel  = '".$tel."' ,  mail = '".$mail."' ,  prim = '".$prim."'  , doljnost = '".$dol."'  ,  prava = '".$prav."'  ,  tt = '".$tt."'   WHERE id = '".$id."' ";
                $result = mysql_query ($query) ;    

                print "<script language='JavaScript'>
                sss='123.php?PHPSESSID='+'"
.$PHPSESSID."'+'&predpr='+'".$predpr."'+'&ter='+'".$ter."';
                top.location.assign(sss);        
                </script>"
;
            }
    }

//добавляет в БД новую запись
if(($status==0 || $status==$ter11) && ($new=='yes'))
    {  
        if($prava_vid==1)
            {
                $query = "INSERT INTO tabel1 (id  , name_user  , tip_pr , NOD , tel , mail , prim  , doljnost , log , pass , prava , tt)  VALUES ('' , '".$fio."' , '".$predpr."' , '".$ter."' , '".$tel."' , '".$mail."' , '".$prim."' , '".$dol."' , '".$log."' , '".$pas."' , '".$prav."' , '".$tt."')";
                $result = mysql_query ($query) ;
                print "<script language='JavaScript'>
                sss='123.php?PHPSESSID='+'"
.$PHPSESSID."'+'&predpr='+'".$predpr."'+'&ter='+'".$ter."';
                top.location.assign(sss);        
                </script>"
;
            }
        else
            {
                $query = "INSERT INTO tabel1 (id  , name_user  , tip_pr , NOD , tel , mail , prim  , doljnost , log , pass , prava , tt )  VALUES ('' , '".$fio."' , '".$predpr."' , '".$ter."' , '".$tel."' , '".$mail."' , '".$prim."' , '".$dol."' , '' , '' , '".$prav."' , '".$tt."')";
                $result = mysql_query ($query) ;
       
                print "<script language='JavaScript'>
                sss='123.php?PHPSESSID='+'"
.$PHPSESSID."'+'&predpr='+'".$predpr."'+'&ter='+'".$ter."';
                top.location.assign(sss);        
                </script>"
;
            }
    }



                $r_z = "Select * from tip_pr where id=".$predpr;
                $res_z = mysql_query($r_z);
                if (mysql_num_rows($res_z)!=0)
                    {
                        while ($rr_z=mysql_fetch_array($res_z))
                                {
                                      $pred = $rr_z["tip_pr"];
                                }}

?>
<br>
<table width=100% cellpadding=0 cellspacing=0 border=0>
<tr><td align= center colspan=2><FONT SIZE=4 ><B>Список пользователей системы АС РБ</B> </FONT>    </td></tr>
<tr><?if($teritoria)
        {?>
            <td align= center width=50%>    <FONT SIZE=4><B>по </B></FONT><a class=h_vit href=123.php?ter=<?print $ter;?>><FONT SIZE=4 color=red><B><?print $teritoria;?></B></FONT></a></td>
    <?}
            if($pred)
        {?>
            <td align= center><FONT SIZE=4><B>по службе </B></FONT><a class=h_vit href=123.php?predpr=<?print $predpr;?>><FONT SIZE=4 color=red><B><?print $pred;?></B></FONT></a></td>
    <?}?>
</tr></table>
    <table border=1 width=100% cellpadding=4 cellspacing=0>
    <tr><td class=h1 align=right>&nbsp</td>
    </td></tr> </table>
<br>    
<table border=0 width=100% cellpadding=0 cellspacing=0>
<tr>    
<td  align=left width = 250>
<?if($prava_red!=0)
    {?>
        <a class=h_vit href="form22.php?ter=<?print $ter;?>&predpr=<?print $predpr;?>">Добавить запись</a>
<?}?>        
</td>
<td  align=left>  <a class=h_vit href=passs.php>
Главная</a> </td></tr>
</table>


<TABLE border=1 width=100% cellspacing=0 cellpadding=0>
<TR>
    <Th class=h1 align=center >№ п/п</Th>
    <Th class=h2 align=center width =15%>Имя Ф.О.</Th>
    <Th class=h2  align=center >Тер. принадл.</Th>
    <Th class=h2  align=center >предприятие</Th>
    <Th class=h2 align=center >должность</Th>
    <Th class=h2 align=center >телефон</Th>
    <Th class=h2  align=center >e-mail</Th>
    <Th class=h2 align=center >примечание</Th>
    <?if($prava_vid==1)
    {?>
    <Th class=h2  align=center >логин</Th>
    <Th class=h2  align=center >пароль</Th>
    <?}?>
    <Th class=h2   align=center >права пользователя</Th>
</TR>

<?
if($status==0 || $status==$ter11)
    {
            $r_uch = "Select * from  tabel1 ";
            //  Выборка по ссылкам
            //if ($predpr>0 && $predpr<9) если в БД добавить новое предприятие, то $predpr<9 изменить на $predpr<10 и тд, так же с территориальным делением
            if ($predpr>0 && $predpr<14)   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! не забыть исправить на 9
                {
                    $r_uch=$r_uch."where tip_pr = '".$predpr."' ";
                    if ($ter>0 && $ter<10) {$r_uch=$r_uch." and NOD = '".$ter."' ";}
                }
            else
                {
                    if ($ter>0 && $ter<10) {$r_uch=$r_uch."where NOD = '".$ter."' ";}
                }
                $r_uch =$r_uch." order by tt ";
//&nbsp;
            $res_uch = mysql_query($r_uch);
            if (mysql_num_rows($res_uch)!=0)
                {
                    while ($rr_uch=mysql_fetch_array($res_uch))
                        {    
                             $p++;
                             $id = $rr_uch["id"];
                             $name = $rr_uch["name_user"];
                             $ter = $rr_uch["NOD"];
                                $predpr = $rr_uch["tip_pr"];
                             $tel = $rr_uch["tel"];
                             $mail = $rr_uch["mail"];
                             $prim = $rr_uch["prim"];
                             $dol = $rr_uch["doljnost"];
                     if($prava_vid==1)
                        {
                             $log = $rr_uch["log"];
                             $pas = $rr_uch["pass"];
                        }
                             $prav = $rr_uch["prava"];
                             $tt = $rr_uch["tt"];



                $r_z = "Select * from NOD where id=".$ter;
                $res_z = mysql_query($r_z);
                if (mysql_num_rows($res_z)!=0)
                    {
                        while ($rr_z=mysql_fetch_array($res_z))
                                {
                                      $teritoria = $rr_z["nod"];
                                }}

                $r_z = "Select * from tip_pr where id=".$predpr;
                $res_z = mysql_query($r_z);
                if (mysql_num_rows($res_z)!=0)
                    {
                        while ($rr_z=mysql_fetch_array($res_z))
                                {
                                      $pred = $rr_z["tip_pr"];
                                }}

                $r_z = "Select * from prava where id=".$prav;
                $res_z = mysql_query($r_z);
                if (mysql_num_rows($res_z)!=0)
                    {
                        while ($rr_z=mysql_fetch_array($res_z))
                                {
                                      $prava = $rr_z["prava"];
                                }}
if ($p%2==0){$h="h";}else {$h="h4";}
?>
    <TR>
    <Th class=h1 align=center >&nbsp;<?print $p;?></Th>
    <Th class=h2 align=left title=<?print $tt;?> >&nbsp
    <?if($prava_red==1)
        {
   
    ?>
            <a class=h_vit href="form.php?ter=<?print $ter;?>&predpr=<?print $predpr;?>&prav=<?print $prav;?>&id=<?print $id;?>">
            <?print $name;?></a><?} else {print $name;
        }?></Th>

    <Th class=<?print $h;?>  align=center ><a class=h_dim href=123.php?ter=<?print $ter;?>><?if(!$teritoria){print "&nbsp";}print $teritoria;?></a></Th>
    <Th class=<?print $h;?>  align=center ><a class=h_dim href=123.php?predpr=<?print $predpr;?>><?if(!$pred){print "&nbsp";}print $pred;?></a></Th>
    <Th class=<?print $h;?> align=left >&nbsp&nbsp<?if(!$dol){print "&nbsp";}print $dol;?></Th>
    <Th class=<?print $h;?> align=center ><?if(!$tel){print "&nbsp";}print $tel;?></Th>
    <Th class=<?print $h;?>  align=center ><?if(!$mail){print "&nbsp";}print $mail;?></Th>
    <Th class=<?print $h;?> align=center ><?if(!$prim){print "&nbsp";}print $prim;?></Th>
    <?if($prava_vid==1)
    {?>
    <Th class=<?print $h;?>  align=center >&nbsp<?if(!$log){print "&nbsp";}print $log;?></Th>
    <Th class=<?print $h;?>  align=center ><?if(!$pas){print "&nbsp";}print $pas;?></Th>
<?}?>
    <Th class=<?print $h;?>   align=center ><?if(!$prava){print "&nbsp";}print $prava;?></Th>
    </TR>
<?        }       }
?>
</TABLE>
       
<?}
}?>
</BODY>
</HTML>
[/syntax]

Вроде все кавычки везде верно проставлены. Собственно сам вопрос: Каким образом можно убрать это безобразие ?

Заранее спасибо.

Отредактированно Vyacheslav (24.01.2012 15:06:58)


Прикрепленные файлы:
Attachment Icon Безымянный.JPG, Размер: 76,442 байт, Скачано: 342

Неактивен

 

#2 24.01.2012 15:20:51

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Для начала замените строчку

if (!$result) echo "Не удалось выполнить запрос по причине: ".mysql_error();

на
if (!$res_z) echo "Не удалось выполнить запрос " . $r_z . " по причине: ".mysql_error();


Есть подозрение, что запрос просто некорректный


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 24.01.2012 15:44:23

Vyacheslav
Участник
Зарегистрирован: 24.01.2012
Сообщений: 3

Re: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Заменил, выводит 

Не удалось выполнить запрос Select * from NOD where id=по причине: 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
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in H:\home\nuke\www\asrb\123.php on line 25

SQL кстати ставился с набором Денвера, до этого использовался старый Денвер. Была версия MySQL-клиента: 3.23.49, версия сервера: 3.23.53-max. Сейчас же версия MySQL-клиента: 5.0.51a, а версия сервера: 5.1.40-community. При том, что если все это дело запускать на старом, то все работает, ошибок не выдает.

Отредактированно Vyacheslav (24.01.2012 15:45:15)

Неактивен

 

#4 24.01.2012 15:47:10

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Так я и думал. Идёт попытка выполнить запрос "Select * from NOD where id=", он естественно не может быть выполнен, потому что справа от знака равенства должно стоять число, что-то вроде "Select * from NOD where id=1".
Давайте посмотрим, откуда ноги растут, вот отсюда:

$r_z = "Select * from NOD where id=".$ter;

Переменная $ter не определена, как видим, да и в коде сверху она нигде не опеределяется и не используется. Так что ищите в этом направлении.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 24.01.2012 16:30:06

Vyacheslav
Участник
Зарегистрирован: 24.01.2012
Сообщений: 3

Re: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource

Так я и думал. Идёт попытка выполнить запрос "Select * from NOD where id=", он естественно не может быть выполнен, потому что справа от знака равенства должно стоять число, что-то вроде "Select * from NOD where id=1".
Давайте посмотрим, откуда ноги растут, вот отсюда:

$r_z = "Select * from NOD where id=".$ter;

Переменная $ter не определена, как видим, да и в коде сверху она нигде не опеределяется и не используется. Так что ищите в этом направлении.

Ура! Спасибо за наводку, дедка! Глянул на страницы, где может определятся данная переменная. Нашел ее, а также нашел похожий запрос на той же странице. Все оказалось на самом деле очень просто:
В запросе:

$r_z = "Select * from NOD where id=".$ter;

нужно было просто написать следующим образом:

$r_z = "Select * from NOD where id= '".$ter."'";

Надеюсь кому-нибудь поможет данное решение.
Тему можно закрывать.

Отредактированно Vyacheslav (24.01.2012 16:32:12)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson