Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Здравствуйте! С 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();[/syntax]
?>
<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> </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 ";
//
$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 > <?print $p;?></Th>
<Th class=h2 align=left title=<?print $tt;?> > 
<?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 " ";}print $teritoria;?></a></Th>
<Th class=<?print $h;?> align=center ><a class=h_dim href=123.php?predpr=<?print $predpr;?>><?if(!$pred){print " ";}print $pred;?></a></Th>
<Th class=<?print $h;?> align=left >  <?if(!$dol){print " ";}print $dol;?></Th>
<Th class=<?print $h;?> align=center ><?if(!$tel){print " ";}print $tel;?></Th>
<Th class=<?print $h;?> align=center ><?if(!$mail){print " ";}print $mail;?></Th>
<Th class=<?print $h;?> align=center ><?if(!$prim){print " ";}print $prim;?></Th>
<?if($prava_vid==1)
{?>
<Th class=<?print $h;?> align=center > <?if(!$log){print " ";}print $log;?></Th>
<Th class=<?print $h;?> align=center ><?if(!$pas){print " ";}print $pas;?></Th>
<?}?>
<Th class=<?print $h;?> align=center ><?if(!$prava){print " ";}print $prava;?></Th>
</TR>
<? } }
?>
</TABLE>
<?}
}?>
</BODY>
</HTML>
Вроде все кавычки везде верно проставлены. Собственно сам вопрос: Каким образом можно убрать это безобразие ?
Заранее спасибо.
Отредактированно Vyacheslav (24.01.2012 15:06:58)
Неактивен
Для начала замените строчку
Неактивен
Заменил, выводит
Не удалось выполнить запрос 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)
Неактивен
Так я и думал. Идёт попытка выполнить запрос "Select * from NOD where id=", он естественно не может быть выполнен, потому что справа от знака равенства должно стоять число, что-то вроде "Select * from NOD where id=1".
Давайте посмотрим, откуда ноги растут, вот отсюда:
Неактивен
Так я и думал. Идёт попытка выполнить запрос "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)
Неактивен
Страниц: 1