def find_first_match(string, *regexes):
for regex, handler in regexes:
m = re.search(regex, string):
if m:
handler(m)
return
else:
raise ValueError
find_first_match(
foo,
(r'foo(.+)', handle_foo),
(r'bar(.+)', handle_bar),
(r'baz(.+)', handle_baz))
Для ускорения его можно было превратить весь regexes в один внутренне и создать диспетчера на лету. Идеально, это было бы превращено в класс тогда.
INSERT просто возвращает истину или ложь. чтобы действительно вернуть что-то полезное, вам потребуется SELECT или аналогичный запрос. нет результата для получения с помощью INSERT.
Из документации php:
Возвращаемые значения
Для SELECT
, SHOW
, DESCRIBE
, EXPLAIN
и других операторов, возвращающих набор результатов, mysql_query ()
возвращает ресурс в случае успеха или FALSE
в случае ошибки.
Для других типов операторов SQL: INSERT
, UPDATE
, DELETE
, DROP
и т. Д., mysql_query ()
возвращает ИСТИНА
в случае успеха или ЛОЖЬ
в случае ошибки.
Ресурс возвращенного результата должен быть передан в mysql_fetch_array ()
и другие функции для работы с таблицами результатов, чтобы получить доступ к возвращенным данным.
Используйте mysql_num_rows ()
, чтобы узнать, сколько строк было возвращено для оператора SELECT
или mysql_affected_rows ()
, чтобы узнать, сколько строк было затронуто оператор DELETE
, INSERT
, REPLACE
или UPDATE.
mysql_query ()
также завершится ошибкой и вернет FALSE
, если у пользователя нет разрешения на доступ к таблицам, на которые ссылается запрос.
Обычно, когда разработчики создают домашние функции для управления запросами, они используют два метода. Один, «запрос», используется для SELECT и co, и второй, «exec», другие INSERT, UPDATE и другие (например, в расширении PDO).
Если вы хотите сохранить свою функцию, добавьте оператор IF вокруг цикла проверка типа результатов $ (например, с помощью is_resource ())
From php.net http://us2.php.net/mysql_query
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
For other type of SQL statements, INSERT, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.