SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.09.2007 12:27:56

Hagehog
Участник
Зарегистрирован: 27.08.2007
Сообщений: 15

Запрос не работает в РНР, но работает в Mysql

Проблема вообщем такая
вот текст запроса
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
Синтаксической ошибки ну ни как не увижу здесь. Помогите, пожалуйста.

Неактивен

 

#2 10.09.2007 12:48:24

aleksmir
Участник
Зарегистрирован: 10.09.2007
Сообщений: 3

Re: Запрос не работает в РНР, но работает в Mysql

Попробуй вот так:

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)

Неактивен

 

#3 10.09.2007 13:13:50

Hagehog
Участник
Зарегистрирован: 27.08.2007
Сообщений: 15

Re: Запрос не работает в РНР, но работает в Mysql

Как я тока не пробовал. Но кое-что изменил -  `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)

Неактивен

 

#4 10.09.2007 13:22:51

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Запрос не работает в РНР, но работает в Mysql

Какое у Вас значение @@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' );

Неактивен

 

#5 10.09.2007 16:37:35

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Запрос не работает в РНР, но работает в Mysql

И напишите, пожалуйста, код PHP, который Вы вызываете.
У меня есть подозрение, что какие-то кавычки там съедаются.

Для DEBUG я обычно делаю так:

Код:

$sql = 'INSERT INTO ... ';
echo ($sql);
if ($qry = mysql_query ($sql))
{
...
}
else echo mysql_error();

Неактивен

 

#6 17.09.2007 11:56:30

Hagehog
Участник
Зарегистрирован: 27.08.2007
Сообщений: 15

Re: Запрос не работает в РНР, но работает в Mysql

Результат запроса 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());

Неактивен

 

#7 17.09.2007 14:06:32

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Запрос не работает в РНР, но работает в Mysql

Wow. Кажется, разобрался с кодом. Но вообще, читается он достаточно тяжело.

Попробуйте все-таки выводить готовое выражение перед вызовом mysql_query.
Вполне возможно, что Вы где-то недоопределили переменную, которая оказывается
пустой при вызове выражения. Например, у Вас используется в первом запросе
$rest, а во втором $resh. Возможно, это так, как и задумывалось, из этого куска
кода не видно. Но может быть, это опечатка, из-за которой все и не работает.

Попробуйте сделать (в обоих выражениях)
$sql = ' ... ';
echo 'QUERY: ' . $sql . '<br>';
$m = mysql_query ($sql) or die (mysql_error());

P.S. Судя по виду ошибки, склонен считать, что она происходит в первом запросе
при пустом названии таблицы.

Неактивен

 

#8 19.09.2007 12:37:05

Hagehog
Участник
Зарегистрирован: 27.08.2007
Сообщений: 15

Re: Запрос не работает в РНР, но работает в Mysql

Проверял. С выражением вроде всё нормально, так как писал специально для проверки в файл

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' );

Всё это не пашет. Проверял много других вариантов. Про то что может съедаться ковычка тоже думал. Чё-то никакого результата.smile
_______________
В дб работают вот эти два запроса
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)

Неактивен

 

#9 19.09.2007 12:43:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Запрос не работает в РНР, но работает в Mysql

Ну, из всех этих выражений правильным является только последнее, разумеется.
Попробуйте скопировать запросы из проверочного файла в клиент mysql и запустить
их оттуда. Почти уверен, что они не сработают и там, т.к. забыли какую-нибудь
кавычку или запятую.

Неактивен

 

#10 19.09.2007 14:47:39

Hagehog
Участник
Зарегистрирован: 27.08.2007
Сообщений: 15

Re: Запрос не работает в РНР, но работает в 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" );
Я скопировал именно оттуда.smile Очень-очень странно

Неактивен

 

#11 19.09.2007 16:37:56

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Запрос не работает в РНР, но работает в Mysql

Боюсь, что Вам прийдется все-таки выполнить тот код, который я написал, иначе мы ничего
не узнаем smile

Попробуйте позапускать запросы из PHP. Дело в сложности конструкций PHP, а не в MySQL,
раз все в нем работает smile

Неактивен

 

#12 21.09.2007 14:23:33

Hagehog
Участник
Зарегистрирован: 27.08.2007
Сообщений: 15

Re: Запрос не работает в РНР, но работает в Mysql

Нашёл косяк. Всё понял. Не выяснил правда из-за чего.

Код:

$string="INSERT INTO '".$resh."' (".$Columns.") "; 
$string2="VALUES(".$Values.");";

Тут я присваиваю весь массив, вроде бы для рнр вполне допустимая операция, поэтому в файл пишется полностью строка, но в mysql он подаёт тока первый символ, то есть также как сделал бы Си++.
Всем спасибо.)

Неактивен

 

#13 21.09.2007 16:00:26

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Запрос не работает в РНР, но работает в Mysql

PHP не преобразовавыет массивы в строку автоматически . Если я правильно понимаю, Вам следует использовать join(',', $columns)

Неактивен

 

#14 28.09.2007 14:22:14

Hagehog
Участник
Зарегистрирован: 27.08.2007
Сообщений: 15

Re: Запрос не работает в РНР, но работает в Mysql

В том то и дело, что преобразовывает, но только одномерный массив, при попытке вывести двумерный массив, он выдаст - Array.)
А что делает функция join?
OFFTOP:
Есть ли функция для подсчёта количества строк в таблице?

Неактивен

 

#15 28.09.2007 15:24:27

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Запрос не работает в РНР, но работает в Mysql

Как следует из названия - объединяет smile

Оффтоп: SELECT COUNT(*) FROM table;

P.S. Кстати, "оффтоп" тут как раз в тему, а пхп - это оффтоп.

Неактивен

 

#16 04.10.2007 14:20:24

Hagehog
Участник
Зарегистрирован: 27.08.2007
Сообщений: 15

Re: Запрос не работает в РНР, но работает в Mysql

Понял, буду иметь ввиду. Спасибо большое.)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson