запрос перестал работать в mysql 5

begin2

Новичок
запрос перестал работать в mysql 5

Раньше писал под mysql 4. В этот раз столкнулся с хостингом, у которого MySQL 5.
Все запросы перестали работать. Насколько я понял - в новой версии изменился синтаксис. Нигде не могу найти описания различий.
Вот старый запрос:
PHP:
$query="INSERT INTO t_raz VALUES ('', $n, $d)";
Выдает сообщение "Ошибка в синтаксисе"
Исправил на:
PHP:
$query="INSERT INTO t_raz VALUES (NULL, $n, $d)";
Выдает: Unknown column 'РѕРєРЅР°' in 'field list'
Исправил на:
PHP:
$query="INSERT INTO t_raz VALUES (1, NULL), (2, $n), (3, $d)";
Теперь выдает: Column count doesn't match value count at row 1. Но в таблице t_raz именно 3 столбца!
Может кто-нибудь объяснить или дать ссылку на статью, где описываются НОВЫЕ правила построения запросов?

P.S. Я понимаю, что наверное уже вопрос избитый, но может стоит сделать прилепленную тему для новичков: "Изменения синтаксиса в MySQL 5"?
 

Фанат

oncle terrible
Команда форума
Вообще-то, к MySQL 5 имеет отношение только первая проблема.
а вторая, по-моему, вообще не к этому запросу относится.

все три поля, надеюсь, в таблице числовые?
 

begin2

Новичок
Первое и третье - SMALLINT, второе - TEXT.
В переменных - соответствующие значения.
 

Фанат

oncle terrible
Команда форума
не шути так больше.
прочитай синтаксис составления запросов для любой версии mysql
в FAQ форума, к примеру, есть
 

begin2

Новичок
прочитал фак, доделал запрос:

-~{}~ 15.05.07 23:46:

прочитал фак, доделал запрос:

$n=addslashes($_GET['name2']);
$d=intval($_GET['d']);
$query="INSERT INTO `t_raz` VALUES (1, NULL), (2, '$n'), (3, '$d')";

Но вылезает все та же ошибка: Column count doesn't match value count at row 1.
P.S. предыдущий ответ отправил случайно
 

Anarki

Новичок
begin2
http://dev.mysql.com/doc/refman/5.1/en/insert.html
И внимательно посмотреть для чего используется несколько идущих подряд скобок через запятую

>Column count doesn't match value count at row 1.
это значит что число полей при вставке не совпало тому, что есть в строке.
Таблица как я понимаю изначально состояла из 3х полей, а сейчас ей скармливается 2 значения полей для трех строк, без указания полей,куда вставляются эти данные, что и приводит к ошибке
 

kruglov

Новичок
Лично я все время использую синтаксис типа
[sql]... set a='xxx', b='yyy' ...[/sql]
Сразу все видно, все парное, все соответствует.
 

Фанат

oncle terrible
Команда форума
kruglov
а, главное, строки берутся в кавычки =)

так же преимущество этого синтаксиса в том, что унифицируется составление запросов для вставки и обновления. я тоже использую только его.
 
Сверху