Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.07.2011, 20:18
Интересующийся
Отправить личное сообщение для Vuzy Посмотреть профиль Найти все сообщения от Vuzy
 
Регистрация: 01.07.2011
Сообщений: 19

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

Пишу простейший SQL запрос в БД
<?
require_once('bd.php');
$id=1234;
$name='Блаблабла';
$ownerid=836183;
$opentill=time();
$money=1000;
$ttid=1205;
$sell='3';
$buy='4';
$count=124;
$thingname='Медь';
$flags='';
$lup=time();
$sql="INSERT INTO haddan_shop VALUES id='".$id."', name='".$name."', ownerid='".$ownerid."', opentill='".$opentill."', money='".$money."', ttid='".$ttid."', sell='".$sell."', buy='".$buy."', colich='".$count."', thingname='".$thingname."', flags='".$flags."', openshop='1', lastupdatetime='".$lup."'";
mysql_query($sql) or die (mysql_error());
?>

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

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 'id='1234', name='Блаблабла', ownerid='836183', opentill='1310744763', money='100' at line 1

Структура БД
Код:
CREATE TABLE IF NOT EXISTS `haddan_shop` (
  `id` int(11) NOT NULL,
  `name` varchar(100) NOT NULL,
  `description` text NOT NULL,
  `ownerid` int(11) NOT NULL,
  `opentill` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `money` int(11) NOT NULL,
  `ttid` int(11) NOT NULL,
  `sell` varchar(10) NOT NULL,
  `buy` varchar(10) NOT NULL,
  `colich` int(11) NOT NULL,
  `thingname` varchar(50) NOT NULL,
  `flags` varchar(15) NOT NULL,
  `openshop` int(11) NOT NULL,
  `lastupdatetime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
если написать тот же самый запрос в PhpMyAdmin то он выполняется как часы а из скрипта выполнятся не хочет. Другие скрипты на выборку или обновления работают значит какой то косяк в данных.
Ответить с цитированием
  #2 (permalink)  
Старый 15.07.2011, 22:16
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Насколько мне известно INSERT имеет примерно такой синтаксис:
Код:
INSERT INTO `table` (`field1`, `field2`) VALUES ("value1", "value2")
То есть в начале перечисляешь поля, а потом значения для них
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 15.07.2011, 22:42
Интересующийся
Отправить личное сообщение для Vuzy Посмотреть профиль Найти все сообщения от Vuzy
 
Регистрация: 01.07.2011
Сообщений: 19

Поменял запрос на
$sql="INSERT INTO `haddan_shop` (`id`, `name`, `ownerid`, `opentill`, `money`, `ttid`, `sell`, `buy`, `colich`, `thingname`, `flags`, `lastupdatetime`) VALUES ('".$id."','".$name."','".$ownerid."','".$opentill."','".$money."','".$ttid."','".$sell."','".$buy."','".$colich."','".$thingname."''".$flags."','".$lup."')";


старая проблемма исчезла появилась новая теперь мне выдает ошибку:
Column count doesn't match value count at row 1 Я так поняо что то не так с полями или количеством полей но все верно должно быть. я ж указал какие поля заполнять и в порядке значений не ошибся... ниче не понимаю. =(

Последний раз редактировалось Vuzy, 15.07.2011 в 23:04.
Ответить с цитированием
  #4 (permalink)  
Старый 15.07.2011, 22:57
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Сообщение от Vuzy
Я такую кмбинацию тоже использовал не помогло.
А вот это уже не правда. Так всегда работало.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #5 (permalink)  
Старый 15.07.2011, 23:24
Интересующийся
Отправить личное сообщение для Vuzy Посмотреть профиль Найти все сообщения от Vuzy
 
Регистрация: 01.07.2011
Сообщений: 19

Значит я гдето допустил ошибку и немогу понять где... и ошибки теперь две хотя раньше была только одна.
Ответить с цитированием
  #6 (permalink)  
Старый 15.07.2011, 23:29
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

без обид, но неужели так сложно прочитать сообщение об ошибке внимательно? там ясно сказано, в чем проблема.
но получается, что запостить кучу сообщений на форум проще, чем пересчитать количество аргументов для VALUES! это забавно и странно
Ответить с цитированием
  #7 (permalink)  
Старый 16.07.2011, 00:13
Интересующийся
Отправить личное сообщение для Vuzy Посмотреть профиль Найти все сообщения от Vuzy
 
Регистрация: 01.07.2011
Сообщений: 19

Добавил одно поле в запрос теперь везде 13 полей и 13 значений для полей но вернулась старая ошибка:

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 '`lastupdatetime`) VALUES ('1234','Блаблабла','836183','1310760556' ,'1000','1205'' at line 1

вот где ошибка?

$sql="INSERT INTO haddan_shop (`id`, `name`, `ownerid`, `opentill`, `money`, `ttid`, `sell`, `buy`, `colich`, `thingname`, `flags`, `openshop` `lastupdatetime`) VALUES ('".$id."','".$name."','".$ownerid."','".$opentill."','".$money."','".$ttid."','".$sell."','".$buy."','".$colich."','".$thingname."''".$flags."', '1', '".$lup."')";
Ответить с цитированием
  #8 (permalink)  
Старый 16.07.2011, 00:21
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

$sql="INSERT INTO haddan_shop (`id`, `name`, `ownerid`, `opentill`, `money`, `ttid`, `sell`, `buy`, `colich`, `thingname`, `flags`, `openshop` `lastupdatetime`) VALUES ('".$id."','".$name."','".$ownerid."','".$opentill."','".$money."','".$ttid."','".$sell."','".$buy."','".$colich."','".$thingname.*!*"''"*/!*.$flags."', '1', '".$lup."')";
это что такое? sql - это тебе не php
$sql = "INSERT INTO haddan_shop (`id`, `name`, `ownerid`, `opentill`, `money`, `ttid`, `sell`, `buy`, `colich`, `thingname`, `flags`, `openshop` `lastupdatetime`) VALUES ('$id', '$name', '$ownerid', '$opentill', '$money', '$ttid', '$sell', '$buy', '$colich', '*!*CONCAT($thingname, flags)*/!*', '1', '$lup')";

p.s. еще совет: вот такое
Код:
 '".$name."'
тебя самого сбивает с толку, можно же
Код:
 '$name'
.

Последний раз редактировалось ваый, 16.07.2011 в 00:31.
Ответить с цитированием
  #9 (permalink)  
Старый 16.07.2011, 01:30
Интересующийся
Отправить личное сообщение для Vuzy Посмотреть профиль Найти все сообщения от Vuzy
 
Регистрация: 01.07.2011
Сообщений: 19

там данные могут быть с пробелами и хочется избежать путаницы в БД впринципе уже разобрался оказалось что просто небыло запятой... вот тут
`openshop` `lastupdatetime` и все работает. Спс за внимание к проблемме
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие div блока при первом визите на сайт Nushaba Общие вопросы Javascript 28 20.12.2013 21:24
О наследовании событий, или как корректно его отменить. JCShen Events/DOM/Window 8 09.02.2010 00:00
Как правильно писать классы с использованием jQuery? Tpona jQuery 7 13.10.2009 15:16
Как правильно послать XML в POST запросе LowCoder AJAX и COMET 10 15.07.2009 23:20
Как писать скрипты под Opera? ucsus (X)HTML/CSS 2 15.04.2009 13:07