Перейти к содержимому



Не заносит данные в БД

#1 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0
0

Отправлено 09 Октябрь 2009 - 13:02

Есть вот такой код.

$db->sql_query("INSERT INTO ".$prefix."_blocks (block_name, block_title, block_file, show, position, sort, active) VALUES ('".$block_name."', '".$title."', '".$_POST['blockfile']."', ".$_POST['show'].", '".$_POST['position']."', ".$sort.", ".$active.")");


Никак не могу найти ошибку. Не заносит данные в базу. Все названия полей соответствуют. Все данные передаются. В чем может быть ошибка?

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Октябрь 2009 - 11:03

gaaarfild,
Укажи типы полей, мне кажется где-то кавычки забыл. К примеру вокруг $_POST['show']

Если ошибка не в расстановке кавычек, будем искать дальше...
  • 0

#3 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 11 Октябрь 2009 - 13:45

Поле Show имеет тип int. Кавычкм все расставлены верно. Нужно искать дальше. =)
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Октябрь 2009 - 14:07

Тогда так:
$db->sql_query("...") or die(mysql_errno() . ": " . mysql_error());

Пишем сюда что выводит...
  • 0

#5 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 12 Октябрь 2009 - 11:32

1064: 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 'show, position, sort, active) VALUES ('center', 'Самый центральн


  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 12 Октябрь 2009 - 23:09

gaaarfild, хех, использование ключевых слов к добру не приведёт. Хочешь использовать ключевые слова в именах столбцов, обязательно помещай их в обратные кавычки. Слово show является оператором, поэтому его нельзя просто так писать в конструкциях, нужно тогда явно показать, что это у нас имя поля, а не оператор.
Я бы записал так:
$db->sql_query("INSERT INTO `{$prefix}_blocks`
(`block_name`, `block_title`, `block_file`, `show`, `position`, `sort`, `active`)
VALUES
('{$block_name}', '{$title}', '{$_POST['blockfile']}', {$_POST['show']}, '{$_POST['position']}', {$sort}, {$active})
");

  • 0

#7 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 13 Октябрь 2009 - 12:15

АААА!!! точно! =) А я и не сообразил. =) спасибо большое. =)
  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 13 Октябрь 2009 - 20:59

gaaarfild, всегда при написании нужно ставить восприятие ошибок интерпретатором в STRICT.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru