
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
|
![]() Пользователь ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 71 Пользователь №: 32089 На форуме: Карма: Не курю: 30 лет, 2 месяца, 20 дней ![]() |
Пытаюсь освоить общение с MySQL и подружить его с ПХП :rolleyes: Но столкнулся с синтаксической проблемой - никак не могу правильно составить запрос, чтобы MySQL меня не отругал :lol: Подскажите плз. :rolleyes:
Собственно в чем суть вопроса - необходимо добавить в таблицу энное количество строк, которые находятся в массиве. Сейчас у меня все работает, но как мне кажется с излишним обращением к БД: foreach ($result3 as $key => $value) Где $result3 - это массив с данными для записи, а mysqlQuery это функция подключения к БД. Т.е. в моем случае, каждый проход цикла, происходит инициализация обращения к БД через mysql_connect, и я так понимаю, что это не совсем правильно :) Как я мыслю - нужно в этом цикле запихнуть в переменную нужное количество строк, а потом один раз подключиться к БД. Типа такого:
Но браузер ругается ERROR 1065 Query was empty, хотя в переменной $sgl содержится запись INSERT INTO `nog_news_tags` (`id`, `id_news`, `id_tags`) VALUES (NULL,'2', '6'); Подскажите пожалуйста, в чем моя ошибка? |
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 71 Пользователь №: 32089 На форуме: Карма: Не курю: 30 лет, 2 месяца, 20 дней ![]() |
Поскольку мне так и не удалось создать многострочный запрос с одним обращением к БД, то я заменил ИРБИСовскую функцию mysqlQuery, в которой кроме обращения, было ещё и подключение к БД, на стандартную функцию mysql_query и запихнул её в цикл. Все работает. Вот только не знаю, как сильно , подобные действия нагружают БД и насколько это критично
![]() |
![]() |
[x]
Дата
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 590 Пользователь №: 32899 На форуме: Карма: 25 ![]() |
Посмотри внимательнее в файл, который содержит Ирбисовскую функцию mysqlQuery();
В самой функции нет подключения к базе. Подключение ниже. Идет, как обычные инструкции php, которые выполняются один раз после того, как ты инклюдишь этот файл. Свернутый текст /** |
![]() |
|
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
Много запросов ты можешь выполнить если используешь mysqli, mysql_multi_query
Зачем клеить несколько запросов если можно так склеить INSERT INTO `nog_news_tags` (`id`, `id_news`, `id_tags`) VALUES (NULL,'2', '6'), (NULL,'2', '6'), (NULL,'2', '6') |
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 71 Пользователь №: 32089 На форуме: Карма: Не курю: 30 лет, 2 месяца, 20 дней ![]() |
kamanch Это от моего некоторого недопонимания - я думал, что в записи $result = mysql_query($sql, IRB_CONNECT); IRB_CONNECT' - это параметр для подключения к БД
![]() ![]() ==== Winston, Спасибо, попробую ![]() |
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 71 Пользователь №: 32089 На форуме: Карма: Не курю: 30 лет, 2 месяца, 20 дней ![]() |
Winston
Получилось! Запихнул в цикл $sql.="(NULL,'".$GET['id']."', '".$key."'), "; потом обрезал, все, что было лишнее сзади $sql=rtrim(rtrim($sql),","); И заработало :) |
![]() |
|
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
$sql = array(); И не нужно танцевать с rtrim :) |
![]() |
۩
Дата
|
||
![]() Пользователь ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 71 Пользователь №: 32089 На форуме: Карма: Не курю: 30 лет, 2 месяца, 20 дней ![]() |
Вах! Век живи, век учись! ![]() ![]() ![]() А если в двух словах, чем Ваш метод лучше моего? ![]() ![]() |
||
![]() |
|||
![]() ![]() ④ ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Эксперт ![]() Сообщений: 9509 Пользователь №: 18161 На форуме: Карма: 552 ![]() |
Тем, что он не создает лишних символов (,), которые в конечном результате нужно будет обрезать ![]() |
||
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 71 Пользователь №: 32089 На форуме: Карма: Не курю: 30 лет, 2 месяца, 20 дней ![]() |
Winston, ОК, понял! Спасибо! Постараюсь запомнить
![]() |
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 71 Пользователь №: 32089 На форуме: Карма: Не курю: 30 лет, 2 месяца, 20 дней ![]() |
В продолжение темы циклов, правда теперь нужно не добавлять строки, а удалять :)
Если я удаляю несколько строк через phpMyAdmin, то он выдает вот такой запрос: $sql = "DELETE FROM `tags` WHERE `id` = 24;\n" то бишь меняется один лишь параметр. Направьте на путь истинный, как правильно записать запрос в цикле, чтобы можно было удалять от одной, до нескольких строк из таблицы, в зависимости от их количества в массиве? Спасибо заранее :) ===== Будет ли правильной запись такого вида: $sql = "DELETE FROM `tags` WHERE `id` = 24,`id` = 23;";??? |
![]() |
۩
Дата
|
||
![]() Пользователь ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 71 Пользователь №: 32089 На форуме: Карма: Не курю: 30 лет, 2 месяца, 20 дней ![]() |
Так не работает ![]() Подскажите плз, как наиболее правильно составить запрос для удаления нескольких строк ![]() |
||
![]() |
![]() ![]() ![]() |