Перейти к публикации

Недостаточно знаний для реализации


Рекомендованные сообщения

Прошу отнестись с пониманием и набраться терпения.

Задача:

нужно написать свой файл, который вносил бы изменения в таблицу 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 конкретного пользователя?

Изменено пользователем eph1r
Ссылка на сообщение
Поделиться на других сайтах

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) пустой, то ворнинг не вылезет

Ссылка на сообщение
Поделиться на других сайтах

Да, все верно - пока здесь только про выборку. Рано писать о замене, если еще не могу найти то, что нужно будет заменить.

Заменил, получил такое

 $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)){

Ссылка на сообщение
Поделиться на других сайтах

так это потому что результат выполнения вашего запроса пустой.

после

$query='SELECT * FROM `dle_users` WHERE `name`="'.$nik.'"';

добавьте

echo $query;

и посмотрите какой получается запрос

заодно поймете какой он может выдать результат

P.S. а вообще, есть у вас юзер с именем "name" ?

Ссылка на сообщение
Поделиться на других сайтах

есть. В целях теста сделал такого юзера.

Какой получается запрос я знаю. В 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); ) выдает ошибку

Изменено пользователем eph1r
Ссылка на сообщение
Поделиться на других сайтах

а если убрать апострофы и поставить правильно двойную кавычку?

$query= "SELECT * FROM dle_users WHERE name='".$nik."'";

и еще вы не сделала выбор базы

то бишь mysql_select_db

Ссылка на сообщение
Поделиться на других сайтах

Та же байда

вот полностью файл:

<?


 $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)

то ли я такой тупой, то ли проблема уже не во мне...

Ссылка на сообщение
Поделиться на других сайтах

еще раз говорю, вы не сделали выбор базы.

к майскл-серверу подключаетесь, а базу не выбираете

Ссылка на сообщение
Поделиться на других сайтах

<?


 $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 продолжает ненравиться...

Изменено пользователем eph1r
Ссылка на сообщение
Поделиться на других сайтах

вот в таком виде все прекрасно работает

<?

$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'];

}

?>

Ссылка на сообщение
Поделиться на других сайтах

xex... а меня посылает :(

может ли это происходить из-за настроек на сервере?

---------------------------

хм... фигню спросил, ога...

Изменено пользователем eph1r
Ссылка на сообщение
Поделиться на других сайтах

надеюсь вы заменили тут

$nik='admin';

$db=mysql_connect('localhost','root','xxxx');

mysql_select_db('dletest');

значения на свои?

если да, то:

отслеживания ошибок можно использовать функцию die (mysql_error())

например

$result=mysql_query($query) or die ("Ошибка: ".mysql_error());

настройки сервера тут не при чем, это же простейший запрос

скорее всего ошибка в коннекте к базе.

Ссылка на сообщение
Поделиться на других сайтах

Ха! Все-таки проблема была во мне =)

вместо имени db_user вставил db_name... похожи уж больно... Спасибо за терпение! =)

Теперь нужно изменить user_group...

Попробую разобраться

Ссылка на сообщение
Поделиться на других сайтах

на всякий случай, в запросе с UPDATE

в конце запроса добавьте LIMIT 1

а то с такими мучениями - похерите всю базу ;)

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...