Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: выполнение множества запросов
 
 автор: Денис   (16.09.2005 в 19:41)   письмо автору
 
 

скажите, все ли запросы заканчиваются символом " ; " и может ли быть, что в середине запроса этот символ встретится?Иными словами, я хочу в <textarea> вставить не один запрос, а несколько, то стоит ли мне проверять на наличие символа " ; "?

   
 
 автор: cheops   (16.09.2005 в 20:13)   письмо автору
 
   для: Денис   (16.09.2005 в 19:41)
 

Вы хотите разобрать дамп? Нет в середине запросов ; тоже вполне может втретится, например в тексте данного сообщения, который тоже попадает в базу данных. Обычно запросы завершаются ); но имеются исключения, например определения таблиц и т.п.

   
 
 автор: Денис   (19.09.2005 в 12:59)   письмо автору
 
   для: cheops   (16.09.2005 в 20:13)
 

у меня есть форма и текстовое окно <textarea>, где помещаю свой запрос. При выполнении
одного запроса, скажем CREATE TABLE forum (...); - запрос выполняется успешно. если ставлю пробел после ); - сообщает
об ошибке, хотя перед тем, как выполнить запрос, делаю $query = stripslashes(rtrim($query));. И потому, когда ставлю
еще один запрос, следом за первым - он также не выполняется, фиксируя ту же ошибку. Можно обойти этот вариант? и как решить
решить проблему с символами ); и ; ?

   
 
 автор: cheops   (19.09.2005 в 13:24)   письмо автору
 
   для: Денис   (19.09.2005 в 12:59)
 

А как вы разбиваете содержимое тектовой области на отдельные запросы, перед тем как скормить их mysql_query(), которая может обрабатывать только один запрос?

   
 
 автор: Денис   (19.09.2005 в 13:44)   письмо автору
 
   для: cheops   (19.09.2005 в 13:24)
 

ну изначально это было так:

if($REQUEST_METHOD=="POST")
{
    $query = stripslashes(rtrim($query));
    $query = explode(";", $query);
    unset($query[sizeof($query) - 1]);
      //echo stripslashes($query);
      if(tep_db_query($query))
      {
        echo "Your SQL-query has been executed successfully";
      }
}

Но, как я уже говорил, это работает только(!) на один запрос и только если после него не будет пробела :-). этот вариант не подходит

   
 
 автор: cheops   (19.09.2005 в 19:36)   письмо автору
 
   для: Денис   (19.09.2005 в 13:44)
 

Попробуйте разбивать выражение по регулярному выражению при помощи функции preg_split() как это описано в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1407.

   
 
 автор: Денис   (20.09.2005 в 16:05)   письмо автору
 
   для: cheops   (19.09.2005 в 19:36)
 

Все равно, что-то работает не так, как надо. Я заменил строку "$query = explode(";", $query); " на "$query = preg_split("#\);\r\n|M;\r\n#i", $query);" - ошибка та же. Понимаете, она то ли не обрезает пустые символы, то ли не может определить пробелы, потому что указывает все время на одну и ту же строку в запросе(позиция в строке, где стоит ; потом идет пробел или переход на другую строку и потом идет новый запрос create table... - вот именно на это место и указывает). Я ж ведь перед подачей в базу запроса обрезаю пустые места слева и справа - и все равно не понимает.Скорее всего, весь блок запросов видит как один цельный блок и обрезает пробелы в начале и в конце блока.

   
 
 автор: Денис   (20.09.2005 в 20:44)   письмо автору
 
   для: cheops   (19.09.2005 в 19:36)
 

работает! :-). теперь все добавляет и удаляет. осталась одна задача - добавить возможность выборки

   
 
 автор: cheops   (21.09.2005 в 01:26)   письмо автору
 
   для: Денис   (20.09.2005 в 20:44)
 

> добавить возможность выборки
Это как?

   
 
 автор: Денис   (21.09.2005 в 12:42)   письмо автору
 
   для: cheops   (21.09.2005 в 01:26)
 

у меня пока не получается выполнить запрос select. на запрос "SELECT * FROM 'tableau61;' WHERE 1" выводится предупреждение: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

   
 
 автор: Денис   (21.09.2005 в 14:13)   письмо автору
 
   для: Денис   (21.09.2005 в 12:42)
 

все получилось, работает. спасибо за помощь

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования