Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не выполняется запрос 
:(
    Опции темы
Hunt
  Дата 1.7.2008, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



У меня похожая проблема:
Не могу понять в чем проблема, делаю абсолютно нормальный запрос к базе для добавления записей, а оно выдает ошибку № 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 '' at line 1...
через PHP my admin делаю этот запрос(точь-в точь этот, потому что через пхп я паралельно и сделал запрос и вывел на экран, и с экрана скопировал и сделал запрос через PHP my admin) и запрос успешно выполняется.... в чем может быть проблема?

вот код(данные читаются из файла):
Цитата

$i = 1;
$f1= fopen("players.csv", "r+t") or die("Ошибка при открытии файла!$path!!!");
    do
    {
    $list = fgetcsv($f1, 1024, ";");
    $values = "$list[0], '$list[1]',  '$list[2]'";  
    for ($j = 3; $j < count($list); $j++)
  {
  $values = $values.", $list[$j]";
  }
    $q = "insert into players values ($values);";
    mysql_query($q);
    if (mysql_errno() == 0)
  echo "<b>$i</b> $list[1] $list[2] добавлен. <br>";
  else
  echo "ERROR: ".mysql_errno()." ".mysql_error()."<br>";
    echo "$q  <br>";
    $i++;    
    }
    while ($list);


вот что в итоге получаем в окне браузера:
Цитата
ERROR: 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 '' at line 1
insert into players values (2, 'Giovanni', 'Pasquale', 145815, 1, 182, 72, 5, 1, 145, 51, 2, 22, 2, 1, 2, 2, 2, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 56, 75, 71, 64, 51, 27, 62, 75, 69, 46, 82, 79, 58, 77, 49, 82, 51, 84, 74, 75, 74, 79, 12, 21, 21, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 27, 37, 0, 3, 0, 0, 2, 10, 1, 2, 3, 1); 
ERROR: 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 '' at line 1
insert into players values (6, 'Alessio', 'Scarpi', 142632, 1, 188, 81, 0, 0, 48, 87, 1, 25, 5, 1, 2, 5, 11, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 35, 30, 21, 22, 21, 22, 19, 35, 77, 21, 36, 30, 40, 78, 66, 35, 36, 35, 45, 50, 32, 54, 76, 80, 75, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 27, 41, 0, 2, 0, 0, 2, 0, 2, 3, 3, 1); 

итд...
PM MAIL   Вверх
Feldmarschall
Дата 1.7.2008, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Hunt, это не "похожая проблема". Это совсем другая проблема. 

Для начала добавь к запросу побольше переводов строк, желательно после каждого оператора и операнда - тогда по номеру строки мжно будет понять хотя бы, в каком месте запроса её что-то не нравится.

И непонятно, почему ты не искейпишь входящие данные.
PM   Вверх
MoLeX
  Дата 1.7.2008, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 7
Всего: 140




M
MoLeX
Модератор: Пожалуйста, один топик - один вопрос. При том что ваша проблема очень смутно похожа на предыдущую (которую Вы продолжили)



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
bars80080
Дата 1.7.2008, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Код

$q = "insert into players values ($values);";

здесь точка с запятой в конце запроса лишние. надо так:
Код

$q = "insert into players values ($values)";

PM MAIL WWW   Вверх
Sannis
Дата 1.7.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.8.2007
Где: Москва

Репутация: 1
Всего: 13



bars80080, это ещё одно правило хорошего кода, никаких лишних ; в конце запроса?


--------------------
Я Критик Джим, раньше писал моды для IPB 1.3.x-2.3.x, а теперь продвигаю Node.js в массы.
PM MAIL WWW   Вверх
Hunt
Дата 1.7.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 1.7.2008

Репутация: нет
Всего: нет



проблему уже нашел, она была в кодировке файла....
Feldmarschall, а что означает "искейпить входящие данные"?
PM MAIL   Вверх
Feldmarschall
Дата 1.7.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Это значит, что у SQL запросов есть определенный синтаксис. Который надо знать. 
Данные, подставляемые в запрос, должны отвечать следующим требованиям:
строки должны заключаться в кавычки, и в них должны быть обработаны спецсимволы, с помощью функции mysql_real_escape_string()
в кавычки ты заключаешь, а обработку не делаешь. поэтому, если во вставляемом слове встретится спецсимвол, это вызовет ошибку запроса.

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

Это сообщение отредактировал(а) Feldmarschall - 1.7.2008, 11:26
PM   Вверх
bars80080
Дата 1.7.2008, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



прикольно, всю жизнь считал, что ; ломает запрос из пхп...  smile 

Это сообщение отредактировал(а) bars80080 - 1.7.2008, 11:24
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.