powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос из phpMyAdmin проходит, а из файла .php выдаёт ошибку.
8 сообщений из 8, страница 1 из 1
Запрос из phpMyAdmin проходит, а из файла .php выдаёт ошибку.
    #38701393
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот код, формирующий запрос:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
mysql_query ("
INSERT INTO tablizca_naborov (nabory)
VALUES ('" . $imya_nabora . "')");

for ($i = 0; $i < count($massiv_itog); $i++)
{
	//делаем повторяющуюся часть запроса
$slova_i_svyazi[$i] = "
INSERT IGNORE INTO tablizca_slov (slova)
VALUES ('" . $massiv_itog[$i] . "');

INSERT INTO tablizca_svyazej (id_naborov, id_slov)
VALUES ((SELECT id_nab FROM tablizca_naborov WHERE nabory = '" . $imya_nabora . "'),
	   (SELECT id_sl FROM tablizca_slov WHERE slova = '" . $massiv_itog[$i] . "'));
"
;}

$V_BD = implode("\n", $slova_i_svyazi);
print_r ($V_BD);
echo "<br><br>";
mysql_query ($V_BD) or die(mysql_error());



Если результат print_r ($V_BD); ввести напрямую в phpMyAdmin, всё хорошо, а на сайте вылазит вот что:

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 'INSERT INTO tablizca_svyazej (id_naborov, id_slov) VALUES ((SELECT id_nab FROM t' at line 4
...
Рейтинг: 0 / 0
Запрос из phpMyAdmin проходит, а из файла .php выдаёт ошибку.
    #38701399
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejk,

В массив $slova_i_svyazi вы набираете несколько запросов вида INSERT. Затем их почему-то соединяете вместе и пытаетесь выполнить кучей. PHP-шный клиент так делать не умеет. Ему, будьте добры, по одному запросу скармливать. Это первое - то, что видно невооруженным глазом.

Второе. INSERT'ить в одну таблицу можно сразу несколько строк одним запросом. Возможно получится, если позволяет логика, переделать запросы на вставку нескольких строк и тем самым сократить количество обращений к СУБД.
...
Рейтинг: 0 / 0
Запрос из phpMyAdmin проходит, а из файла .php выдаёт ошибку.
    #38701401
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkЕсли результат print_r ($V_BD); ввести напрямую в phpMyAdmin, всё хорошоАга, phpMyAdmin довольно таки неплохо разбирает закинутый в окно SQL-запроса текст и приводит его к удобоваримому для имеющихся средств виду. В частности, разделяет пачку запросов на отдельные.
...
Рейтинг: 0 / 0
Запрос из phpMyAdmin проходит, а из файла .php выдаёт ошибку.
    #38701408
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот код как-то можно подправить?
...
Рейтинг: 0 / 0
Запрос из phpMyAdmin проходит, а из файла .php выдаёт ошибку.
    #38701433
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да можно, правьте.
...
Рейтинг: 0 / 0
Запрос из phpMyAdmin проходит, а из файла .php выдаёт ошибку.
    #38701439
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleДа можно, правьте.

Вот и поправил, только логика не позволяет всё сделать одним запросом.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
mysql_query ("
INSERT INTO tablizca_naborov (nabory)
VALUES ('" . $imya_nabora . "')");

for ($i = 0; $i < count($massiv_itog); $i++)
{
	//делаем повторяющуюся часть запроса
mysql_query("
INSERT IGNORE INTO tablizca_slov (slova)
VALUES ('" . $massiv_itog[$i] . "')");

mysql_query("
INSERT INTO tablizca_svyazej (id_naborov, id_slov)
VALUES ((SELECT id_nab FROM tablizca_naborov WHERE nabory = '" . $imya_nabora . "'),
	    (SELECT id_sl FROM tablizca_slov WHERE slova = '" . $massiv_itog[$i] . "'))
");
}
...
Рейтинг: 0 / 0
Запрос из phpMyAdmin проходит, а из файла .php выдаёт ошибку.
    #38701456
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejk,

В логику глубоко не вникал. Впрочем, и в этом коде есть что оптимизировать. Подзапрос автор
Код: sql
1.
(SELECT id_nab FROM tablizca_naborov WHERE nabory = '" . $imya_nabora . "')

на всех проходах цикла будет возвращать одно и то же значение. Конечно, можно рассчитывать на кеширование результата от первого прохода. Но более правильным было бы не напрягать СУБД бестолковым анализом запроса, а получить поле `id_nab` (так понимаю, автоинкрементное) сразу после самого первого INSERT (до цикла) при помощи соответствующей функции и использовать это значение.
...
Рейтинг: 0 / 0
Запрос из phpMyAdmin проходит, а из файла .php выдаёт ошибку.
    #38701542
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, тут просто в таблицу связей добавляется много строк с одиаковым айди набора и разными айди слов. Так обозначена связь каждого слова с наборами, к одному набору (файлу) может принадлежать сразу несколько слов.
Да у меня там куча чего нужно оптимизировать, другие запросы по полторы минуты выполняются, хотя записей и полсотни нету))
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос из phpMyAdmin проходит, а из файла .php выдаёт ошибку.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]