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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
zarj
Отправлено: 25 Февраля, 2010 - 22:18:17
Post Id


Новичок


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


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




Помогите удалить запись.
Ошибка в этой строке
mysql_query("DELETE FROM books WHERE number='$_POST["nn_del"]'");
следующего рода Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in z:\home\proba...
Причем если $_POST["nn_del"]' заменяю на конкретное число, например 6, то код работает.
number - имя поля.
 
 Top
Мелкий Супермодератор
Отправлено: 25 Февраля, 2010 - 22:36:15
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Всё верно, для подстановки ассочиативного массива включённого в двойные кавычки, ключ массива в кавычки обрамлять не допускается. Но лучше всё-таки так:
mysql_query("DELETE FROM books WHERE number='".$_POST["nn_del"]."'");

А если ещё подумать - то лучше так:
PHP:
скопировать код в буфер обмена
  1. mysql_query("DELETE FROM books WHERE number='".mysql_real_escape_string($_POST["nn_del"])."'");

Ибо в вашем случае легко проводится SQL-инъекция


-----
PostgreSQL DBA
 
 Top
zarj
Отправлено: 25 Февраля, 2010 - 23:45:36
Post Id


Новичок


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


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




1) Вариант 1 работает. Спасибо.
2) Вариант 2 работает. Спасибо.
3) Работает вопреки логики еще вариант 3
$query = "DELETE FROM books WHERE number=".$_POST['nn_del'].";";
mysql_query($query); ???
 
 Top
Viper
Отправлено: 26 Февраля, 2010 - 07:51:05
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




zarj пишет:
Работает вопреки логики еще вариант 3


потому что имя элемента массива берется в одинарные кавычки. поэтому и работает


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
Мелкий Супермодератор
Отправлено: 26 Февраля, 2010 - 09:52:47
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




zarj пишет:
Работает вопреки логики еще вариант 3

не вопреки, а согласно.
можно ещё так записать:
PHP:
скопировать код в буфер обмена
  1. mysql_query('DELETE FROM books WHERE number="'.$_POST['nn_del'].'"');

или так:
PHP:
скопировать код в буфер обмена
  1. mysql_query("DELETE FROM books WHERE number=\"".$_POST['nn_del']."\"");

или так:
PHP:
скопировать код в буфер обмена
  1. $sql = <<<SQL
  2. DELETE FROM books WHERE number="$_POST[nn_del]"
  3. SQL;

И ещё куча способов записи.


-----
PostgreSQL DBA
 
 Top
zarj
Отправлено: 28 Февраля, 2010 - 21:17:38
Post Id


Новичок


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


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




можно ещё так записать:
PHP:
скопировать код в буфер обмена
  1. mysql_query("DELETE FROM books WHERE number=\"".$_POST['nn_del']."\"");

А что за синтаксис \" ? Из регулярных?
(Добавление)
Можно еще вопрос из этой же серии? Не работает следующий запрос
CODE (htmlphp):
скопировать код в буфер обмена
  1. $query="INSERT INTO books (number,book,avtor) VALUES(".$_POST('nn').",'ГарриПотер' ,'Джоан Роулинг')";

Значение одного поля поступает из формы -это значение читается и отобраэжается , а два других задаются в лоб ('ГарриПотер', 'Джоан Роулинг' ) - эти значение не отображаются.

(Отредактировано автором: 28 Февраля, 2010 - 21:39:37)

 
 Top
Мелкий Супермодератор
Отправлено: 28 Февраля, 2010 - 21:35:35
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




zarj пишет:
А что за синтаксис \" ? Из регулярных?

просто экранирование кавычки, чтобы она не обрабатывалась как конец строки.

zarj пишет:
Не работает следующий запрос

mysql_error() что отвечает?


-----
PostgreSQL DBA
 
 Top
biperch
Отправлено: 28 Февраля, 2010 - 21:42:01
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


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




ребята number тип int когда его присваивают кавычки не ставят.

PHP:
скопировать код в буфер обмена
  1.     mysql_query("DELETE FROM books WHERE number=".$_POST['nn_del']);
 
 Top
duk
Отправлено: 28 Февраля, 2010 - 21:42:05
Post Id



Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Февр. 2010  
Откуда: Москва


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




VALUES(".$_POST('nn').",'Джоан

VALUES('".$_POST('nn')."','Джоан
 
 Top
zarj
Отправлено: 28 Февраля, 2010 - 22:12:10
Post Id


Новичок


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


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




duk пишет:
VALUES(".$_POST('nn').",'Джоан

VALUES('".$_POST('nn')."','Джоан

НЕ катит. $_POST('nn') - работает, 'Джоан - нет.
(Добавление)
Мелкий пишет:
mysql_error() что отвечает?

Ничего. Код работает, но результат не верный.

(Отредактировано автором: 28 Февраля, 2010 - 22:15:01)

 
 Top
biperch
Отправлено: 28 Февраля, 2010 - 23:12:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


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




zarj
дай больше информации а то мы из пальца по кусочкам придумываем, что там.
А то мы как тот хирург через анал гланды оперирует
(Добавление)
играем в да нет
 
 Top
Мелкий Супермодератор
Отправлено: 28 Февраля, 2010 - 23:38:37
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




zarj пишет:
Не работает следующий запрос

zarj пишет:
Ничего. Код работает, но результат не верный.

Так он работает или работает не верно? Абсолютно разные вещи, как и дебаг к ним.

брр, а с какого перепугу вообще $_POST('nn')? К массиву через [] обращаются, а () - это функция.

biperch пишет:
ребята number тип int когда его присваивают кавычки не ставят.

А кто с динамической типизацией будет гарантировать, что придёт именно int?


-----
PostgreSQL DBA
 
 Top
biperch
Отправлено: 01 Марта, 2010 - 08:35:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


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




Мелкий пишет:
А кто с динамической типизацией будет гарантировать, что придёт именно int?

зрз приводи переменные к указаному типу, (int)$s -- если тут будет стринг он его переведет в число, а если строка не похожа на число то просто возвращает 0.
выше в коде числовому поле(инт) бд присваивают строку, это нормально?
 
 Top
Viper
Отправлено: 01 Марта, 2010 - 08:48:20
Post Id



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


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


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




нет, не нормально. нормально вообще обрабатывать переменные перед вставкой в запрос.
int()$var в запросе это нормально.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
JustUserR
Отправлено: 01 Марта, 2010 - 11:47:51
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




biperch пишет:
А кто с динамической типизацией будет гарантировать, что придёт именно int?
Сделайте gettype/settype и получите именно то что вам нужно


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB