eph1r 0 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 (изменено) Прошу отнестись с пониманием и набраться терпения. Задача: нужно написать свой файл, который вносил бы изменения в таблицу dle_users при выполнении определенного условия. пример: <? $DBHOST="localhost"; $DBNAME="databasename"; $DBUSER="username"; $DBPASS="pass"; ... обработка переменных ... if($nick==$var2){ $db=mysql_connect($DBHOST,$DBUSER,$DBPASS); $query="select user_group from dle_users where name=$nick"; $result=mysql_query($query); $num_results = mysql_num_rows($result); for ($i=0; $i < $num_results; $i++){ $row=mysql_fetch_array($result); echo $row['name']; echo "<br />"; echo $row['user_group']; } } ?> Примерно так... Скрипт ругается: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /.../file.php on line 22 то есть на строку $num_results = mysql_num_rows($result); Помогите побороть! И как изменить скриптом user_group конкретного пользователя? Изменено 13 ноября 2008 пользователем eph1r Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource такая ошибка вылазит, когда выполнен неверный запрос а конструкцию типа $num_results = mysql_num_rows($result); for ($i=0; $i < $num_results; $i++){ $row=mysql_fetch_array($result); echo $row['name']; echo "<br />"; echo $row['user_group']; } } рекомендую заменить на: while ($row=mysql_fetch_array($result)){ echo $row['name']; echo "<br />"; echo $row['user_group']; } и еще не понятен вопрос о замене юзер_груп, если в запросе вы делаете только выборку. кроме того, чтобы не вылазили ворнинги mysql, можно использовать символ @ перед майскл функцией. тогда даже если результат ($result) пустой, то ворнинг не вылезет Цитата Ссылка на сообщение Поделиться на других сайтах
eph1r 0 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 Автор Да, все верно - пока здесь только про выборку. Рано писать о замене, если еще не могу найти то, что нужно будет заменить. Заменил, получил такое $nik='name'; $db=mysql_connect('localhost','db_name','db_pass'); if(!$db) exit; $query='SELECT * FROM `dle_users` WHERE `name`="'.$nik.'"'; $result=mysql_query($query); while ($row=mysql_fetch_array($result)){ echo $row['name']; echo "<br />"; echo $row['user_group']; } ругается Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /file.php on line 27 То есть на строку while ($row=mysql_fetch_array($result)){ Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 так это потому что результат выполнения вашего запроса пустой. после $query='SELECT * FROM `dle_users` WHERE `name`="'.$nik.'"'; добавьте echo $query; и посмотрите какой получается запрос заодно поймете какой он может выдать результат P.S. а вообще, есть у вас юзер с именем "name" ? Цитата Ссылка на сообщение Поделиться на других сайтах
eph1r 0 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 (изменено) Автор есть. В целях теста сделал такого юзера. Какой получается запрос я знаю. В phpMyAdmin такой запрос SELECT * FROM `dle_users` WHERE `name`="name" проходит и выводит строку нормально. Через пхп не получается почему-то. Именно на функцию mysql_fetch_array() ругается, если заменить ее на mysql_num_rows, соответственно и пхп чуток поправить, то результат тот же - supplied argument is not a valid echo $query; показывает SELECT * FROM `dle_users` WHERE `name`="eph1r" строка полностью корректна. Далее идет $result=mysql_query($query); и следующая строка ($row=mysql_fetch_array($result); ) выдает ошибку Изменено 13 ноября 2008 пользователем eph1r Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 а если убрать апострофы и поставить правильно двойную кавычку? $query= "SELECT * FROM dle_users WHERE name='".$nik."'"; и еще вы не сделала выбор базы то бишь mysql_select_db Цитата Ссылка на сообщение Поделиться на других сайтах
eph1r 0 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 Автор Та же байда вот полностью файл: <? $nik='nick'; $db=mysql_connect('localhost','***','***'); if(!$db){exit;} $query="SELECT * FROM dle_users WHERE name=".$nik.""; echo $query; $result=mysql_query($query); while ($row=mysql_fetch_array($result)){ echo $row['name']; echo $row['user_group']; } ?> Матом кроет mysql_fetch_array($result) то ли я такой тупой, то ли проблема уже не во мне... Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 еще раз говорю, вы не сделали выбор базы. к майскл-серверу подключаетесь, а базу не выбираете Цитата Ссылка на сообщение Поделиться на других сайтах
eph1r 0 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 (изменено) Автор <? $nik='nick'; $db=mysql_connect('localhost','***','***'); mysql_select_db('***', $db); if(!$db){exit;} $query="SELECT * FROM dle_users WHERE name=".$nik.""; echo $query; $result=mysql_query($query); while ($row=mysql_fetch_array($result)){ echo $row['name']; echo $row['user_group']; } ?> fetch_array продолжает ненравиться... Изменено 13 ноября 2008 пользователем eph1r Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 вот в таком виде все прекрасно работает <? $nik='admin'; $db=mysql_connect('localhost','root','xxxx'); mysql_select_db('dletest'); if(!$db){exit;} $query="SELECT * FROM dle_users WHERE name='".$nik."'"; $result=mysql_query($query); while ($row=mysql_fetch_array($result)){ echo $row['name']."<BR>".$row['user_group']; } ?> Цитата Ссылка на сообщение Поделиться на других сайтах
eph1r 0 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 (изменено) Автор xex... а меня посылает может ли это происходить из-за настроек на сервере? --------------------------- хм... фигню спросил, ога... Изменено 13 ноября 2008 пользователем eph1r Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 надеюсь вы заменили тут $nik='admin'; $db=mysql_connect('localhost','root','xxxx'); mysql_select_db('dletest'); значения на свои? если да, то: отслеживания ошибок можно использовать функцию die (mysql_error()) например $result=mysql_query($query) or die ("Ошибка: ".mysql_error()); настройки сервера тут не при чем, это же простейший запрос скорее всего ошибка в коннекте к базе. Цитата Ссылка на сообщение Поделиться на других сайтах
eph1r 0 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 Автор Ха! Все-таки проблема была во мне =) вместо имени db_user вставил db_name... похожи уж больно... Спасибо за терпение! =) Теперь нужно изменить user_group... Попробую разобраться Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 на всякий случай, в запросе с UPDATE в конце запроса добавьте LIMIT 1 а то с такими мучениями - похерите всю базу Цитата Ссылка на сообщение Поделиться на других сайтах
eph1r 0 Опубликовано: 13 ноября 2008 Рассказать Опубликовано: 13 ноября 2008 Автор Вахах=) бэкап сделал =) все работает, почти как часы. Спасибо за помощь! Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.