Задавайте вопросы, мы ответим
Вы не зашли.
Проблема вообщем такая
вот текст запроса
INSERT INTO mi_gruz(code,model,type,year,price,status,foto ) VALUES("1","2","3","4","5","6","7" );
В Mysql успешно работает, а если через mysql_query() выдаёт
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 '' at line 1
Синтаксической ошибки ну ни как не увижу здесь. Помогите, пожалуйста.
Неактивен
Попробуй вот так:
INSERT INTO `mi_gruz` (`code`, `model`, `type`, `year`, `price`, `status`, `foto`) VALUES ('1', '2', '3', '4', '5', '6', '7');
Отредактированно aleksmir (10.09.2007 12:48:57)
Неактивен
Как я тока не пробовал. Но кое-что изменил - `mi_gruz`. Та же ошибка теперь выглядет по-другому
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 ' 'mi_gruz' (code,model,type,year,price,status,foto ' at line 1
либо
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 ' 'mi_gruz' ('code','model','type','year','price','status','foto' ' at line 1
Отредактированно Hagehog (10.09.2007 13:14:40)
Неактивен
Какое у Вас значение @@sql_mode в PHP? Попробуйте запрос
SELECT @@sql_mode AS mode
Какой sql_mode в консоли MySQL?
Попробуйте запрос в виде:
INSERT INTO mi_gruz (code,model,type,year,price,status,foto ) VALUES ('1','2','3','4','5','6','7' );
Неактивен
И напишите, пожалуйста, код PHP, который Вы вызываете.
У меня есть подозрение, что какие-то кавычки там съедаются.
Для DEBUG я обычно делаю так:
$sql = 'INSERT INTO ... '; echo ($sql); if ($qry = mysql_query ($sql)) { ... } else echo mysql_error();
Неактивен
Результат запроса SELECT @@sql_mode AS mode = mode
$m=mysql_query("select * from ".$rest.$suf[$k]) or die(mysql_error()); while($st_res=mysql_fetch_array($m)) { $a=$st_res['option'].$suf2[$k]; $_POST[$a]=eregi_replace('\n','<BR>',$_POST[$a]); $data=$_POST[$a]; $Columns=$Columns."'".$a."',"; $Values=$Values."'".$data."',"; } $i=strlen($Columns); $j=strlen($Values); $i=$i-1; $j=$j-1; $Columns[$i]=$Values[$j]=''; $string="INSERT INTO '".$resh."' (".$Columns.") "; $string2="VALUES(".$Values.");"; $save=mysql_query($string.$string2) or die(mysql_error());
Неактивен
Wow. Кажется, разобрался с кодом. Но вообще, читается он достаточно тяжело.
Попробуйте все-таки выводить готовое выражение перед вызовом mysql_query.
Вполне возможно, что Вы где-то недоопределили переменную, которая оказывается
пустой при вызове выражения. Например, у Вас используется в первом запросе
$rest, а во втором $resh. Возможно, это так, как и задумывалось, из этого куска
кода не видно. Но может быть, это опечатка, из-за которой все и не работает.
Попробуйте сделать (в обоих выражениях)
$sql = ' ... ';
echo 'QUERY: ' . $sql . '<br>';
$m = mysql_query ($sql) or die (mysql_error());
P.S. Судя по виду ошибки, склонен считать, что она происходит в первом запросе
при пустом названии таблицы.
Неактивен
Проверял. С выражением вроде всё нормально, так как писал специально для проверки в файл
INSERT INTO ' mi_special ' ('code','model','type','year','price','status','foto' ) VALUES('яяф','','ффф','ффф','ффф','','d41d8cd98f00b204e9800998ecf8427e' );
INSERT INTO 'mi_gruz' ('code','model','type','year','price','status','foto' ) VALUES('','','','','','','d41d8cd98f00b204e9800998ecf8427e' );
INSERT INTO 'mi_special' (code,model,type,year,price,status,foto ) VALUES("яяф","","ффф","ффф","ффф","","d41d8cd98f00b204e9800998ecf8427e" );
INSERT INTO mi_special (code,model,type,year,price,status,foto ) VALUES('яяф','','ффф','ффф','ффф','','d41d8cd98f00b204e9800998ecf8427e' );
Всё это не пашет. Проверял много других вариантов. Про то что может съедаться ковычка тоже думал. Чё-то никакого результата.
_______________
В дб работают вот эти два запроса
INSERT INTO mi_gruz (code,model,type,year,price,status,foto ) VALUES ('1','2','3','4','5','6','7' );
INSERT INTO mi_gruz (code,model,type,year,price,status,foto ) VALUES ("1","2","3","4","5","6","7" );
Отредактированно Hagehog (19.09.2007 12:40:17)
Неактивен
Ну, из всех этих выражений правильным является только последнее, разумеется.
Попробуйте скопировать запросы из проверочного файла в клиент mysql и запустить
их оттуда. Почти уверен, что они не сработают и там, т.к. забыли какую-нибудь
кавычку или запятую.
Неактивен
Я так собственно и делал
эти два запроса
INSERT INTO mi_gruz (code,model,type,year,price,status,foto ) VALUES ('1','2','3','4','5','6','7' );
INSERT INTO mi_gruz (code,model,type,year,price,status,foto ) VALUES ("1","2","3","4","5","6","7" );
Я скопировал именно оттуда. Очень-очень странно
Неактивен
Боюсь, что Вам прийдется все-таки выполнить тот код, который я написал, иначе мы ничего
не узнаем
Попробуйте позапускать запросы из PHP. Дело в сложности конструкций PHP, а не в MySQL,
раз все в нем работает
Неактивен
Нашёл косяк. Всё понял. Не выяснил правда из-за чего.
$string="INSERT INTO '".$resh."' (".$Columns.") "; $string2="VALUES(".$Values.");";
Тут я присваиваю весь массив, вроде бы для рнр вполне допустимая операция, поэтому в файл пишется полностью строка, но в mysql он подаёт тока первый символ, то есть также как сделал бы Си++.
Всем спасибо.)
Неактивен
PHP не преобразовавыет массивы в строку автоматически . Если я правильно понимаю, Вам следует использовать join(',', $columns)
Неактивен
В том то и дело, что преобразовывает, но только одномерный массив, при попытке вывести двумерный массив, он выдаст - Array.)
А что делает функция join?
OFFTOP:
Есть ли функция для подсчёта количества строк в таблице?
Неактивен
Как следует из названия - объединяет
Оффтоп: SELECT COUNT(*) FROM table;
P.S. Кстати, "оффтоп" тут как раз в тему, а пхп - это оффтоп.
Неактивен
Понял, буду иметь ввиду. Спасибо большое.)
Неактивен