|
|
|
| скажите, все ли запросы заканчиваются символом " ; " и может ли быть, что в середине запроса этот символ встретится?Иными словами, я хочу в <textarea> вставить не один запрос, а несколько, то стоит ли мне проверять на наличие символа " ; "? | |
|
|
|
|
|
|
|
для: Денис
(16.09.2005 в 19:41)
| | Вы хотите разобрать дамп? Нет в середине запросов ; тоже вполне может втретится, например в тексте данного сообщения, который тоже попадает в базу данных. Обычно запросы завершаются ); но имеются исключения, например определения таблиц и т.п. | |
|
|
|
|
|
|
|
для: cheops
(16.09.2005 в 20:13)
| | у меня есть форма и текстовое окно <textarea>, где помещаю свой запрос. При выполнении
одного запроса, скажем CREATE TABLE forum (...); - запрос выполняется успешно. если ставлю пробел после ); - сообщает
об ошибке, хотя перед тем, как выполнить запрос, делаю $query = stripslashes(rtrim($query));. И потому, когда ставлю
еще один запрос, следом за первым - он также не выполняется, фиксируя ту же ошибку. Можно обойти этот вариант? и как решить
решить проблему с символами ); и ; ? | |
|
|
|
|
|
|
|
для: Денис
(19.09.2005 в 12:59)
| | А как вы разбиваете содержимое тектовой области на отдельные запросы, перед тем как скормить их mysql_query(), которая может обрабатывать только один запрос? | |
|
|
|
|
|
|
|
для: 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";
}
}
|
Но, как я уже говорил, это работает только(!) на один запрос и только если после него не будет пробела :-). этот вариант не подходит | |
|
|
|
|
|
|
|
для: Денис
(19.09.2005 в 13:44)
| | Попробуйте разбивать выражение по регулярному выражению при помощи функции preg_split() как это описано в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1407. | |
|
|
|
|
|
|
|
для: cheops
(19.09.2005 в 19:36)
| | Все равно, что-то работает не так, как надо. Я заменил строку "$query = explode(";", $query); " на "$query = preg_split("#\);\r\n|M;\r\n#i", $query);" - ошибка та же. Понимаете, она то ли не обрезает пустые символы, то ли не может определить пробелы, потому что указывает все время на одну и ту же строку в запросе(позиция в строке, где стоит ; потом идет пробел или переход на другую строку и потом идет новый запрос create table... - вот именно на это место и указывает). Я ж ведь перед подачей в базу запроса обрезаю пустые места слева и справа - и все равно не понимает.Скорее всего, весь блок запросов видит как один цельный блок и обрезает пробелы в начале и в конце блока. | |
|
|
|
|
|
|
|
для: cheops
(19.09.2005 в 19:36)
| | работает! :-). теперь все добавляет и удаляет. осталась одна задача - добавить возможность выборки | |
|
|
|
|
|
|
|
для: Денис
(20.09.2005 в 20:44)
| | > добавить возможность выборки
Это как? | |
|
|
|
|
|
|
|
для: 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 в 12:42)
| | все получилось, работает. спасибо за помощь | |
|
|
|