Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как правильно организовать проверку!!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
alnik-75
Отправлено: 19 Июня, 2013 - 11:27:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




Добрый день, уважаемые форумчане! Столкнулся с проблемой и теперь хочу получить консультацию.
В скрипте необходимо было произвести удаление записи из таблицы. К примеру:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $result=mysqli_query($db,"DELETE FROM declarations WHERE id='$id_declar' AND id_user='$id_user'  LIMIT 1");
  3.  

Для проверки работоспособности умышленно сделал условие невыполнимым, т.е. id_user не был равен '$id_user'.
Далее, по коду у меня было
PHP:
скопировать код в буфер обмена
  1.  
  2. if($result=='true'){...............дальнейшие действия..................}
  3.  

Как я уже сказал выше, удаление записи не произошло, т.к. не совпало значение id_user с имеющимся.
Раньше я думал, что эта проверка на истинность результата то что мне нужно, однако, несмотря на не удаление записи, скрипт продолжи выполняться.

Я почитал литературу и нашел решение. Это mysqli_affected_rows($db). Его использование решило эту проблему, т.к. если количество строк, затронутых в данном случае DELETE, больше нуля, скрипт продолжает выполняться.

Вопрос, корректно ли в данном случае использование mysqli_affected_rows? Почему проверка на 'true' не дает нужного результата?

Заранее спасибо за ответы
 
 Top
Denkill
Отправлено: 19 Июня, 2013 - 11:30:33
Post Id



Посетитель


Покинул форум
Сообщений всего: 330
Дата рег-ции: Янв. 2013  
Откуда: Барнаул


Помог: 7 раз(а)




alnik-75 пишет:
if($result=='true'){...............дальнейшие действия..................}

Ты проверяешь строковый результат TRUE, а не булево значение

PHP:
скопировать код в буфер обмена
  1. if($result){//Дальнейшие действия}
  2. //это то же самое что и это
  3. if($result==true)

(Отредактировано автором: 19 Июня, 2013 - 11:32:17)



-----
Хо-Хо-Хо
 
 Top
LIME
Отправлено: 19 Июня, 2013 - 11:33:38
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




$result будет true если не было ошибок в запросе
проверять можно так http://php.net/manual/ru/mysqli....ffected-rows.php
 
 Top
alnik-75
Отправлено: 19 Июня, 2013 - 11:36:05
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




LIME пишет:
$result будет true если не было ошибок в запросе
проверять можно так http://php.net/manual/ru/mysqli.affected-rows.php

Как я написал в своем обращении-я это и делаю. Просто решил уточнить))))))))))))) спасибо за помощь
 
 Top
DeepVarvar Супермодератор
Отправлено: 19 Июня, 2013 - 16:55:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А я вообще это не проверяю - ну не удалило ни одной записи и что?
Ну по казал я сообщение "Запись удалена!" когда пользак ввел число от балды.
И что? Это же чисто эстетически нужно.

Ладно там, когда от целевой таблицы зависят одна или более других таблиц.
Но тогда вытащи селектом сперва данные из основной - заодно и проверишь наличие того что надо удалять.
 
 Top
LIME
Отправлено: 19 Июня, 2013 - 18:06:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




DeepVarvar как бэ согласен но
...пусть тренируют проверки
понимание целесообразности придет
а если не придет ...то по...))
(Добавление)
и вообще в случаях DELETE и UPDATE лучше перебздеть чем недобздеть))
первое время уж точно))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB