Проверка SQL-запроса на корректность

Leshas0

Новичок
Проверка SQL-запроса на корректность

всем привет!

есть 2 запроса
1. $sql = "SELECT * FROM `news`";
2. $sql = "SELECT * FROM `news` WHERE ABRACADABRA LILIMIT +-10, 10";

if (mysql_query ($sql))
print "Запрос верный";
else
print "Запрос составлен некорректно";

вопрос:
что бы лишний раз не делать запрос к БД, если ли функция для проверки sql-запроса (может что-то типа isValidQuery($sql))??
или когда в mysql поступает sql-запрос, mysql его проверяет и если найдена ошибка в составленном запросе, возвращает 0?
 

Фанат

oncle terrible
Команда форума
или когда в mysql поступает sql-запрос, mysql его проверяет и если найдена ошибка в составленном запросе, возвращает 0?
по-моему, ты эту функцию написал в своем посте
 

Фанат

oncle terrible
Команда форума
хотя лично я затрудняюсь придумать случай, когда может потребоваться такая проверка
 

Leshas0

Новичок
в скрипте есть возможность создавать фильтры.
фильтр представляет собой просто sql-запрос.
их может быть много.
эти запросы будет составлять человек, который будет администрировать сайт
 

fixxxer

К.О.
Партнер клуба
запросы можно выполнять от имени пользователя которому даны привелегии только на select
но сама идея кастомных запросов мне не нравится, хотя в определенных случаях это может быть и оправдано
 

Wicked

Новичок
должно быть одно ограничение: тот человек, который будет писать запросы, не будет хотеть сломать базу. И чтобы было очень маловероятно, что он сделает это случайно.

Leshas0
это я к тому, что даже селектом можно очень сильно испортить жизнь mysql-серверу.
 

Leshas0

Новичок
конечно, вы правы и по поводу drop table, и по поводу неправильных select'ов, вешающих базу. и вероятность того, что созданный администратором системы sql-запрос может повесить базу, тоже немаленькая.

спасибо!
 

YeTi

Новичок
START TRANSACTION

запрос

ROLLBACK

если таблицы на InnoDB, конечно
 

Wicked

Новичок
Leshas0
к тому же... имей в виду, что у админа должна быть возможность делать ALTER TABLE ADD INDEX, именно в целях, чтобы последующий запрос не уронил базу :) Посему я считаю, что делать список допустимых запросов - дело, в данном случае, неблагодарное.

YeTi
http://dev.mysql.com/doc/refman/5.1/en/cannot-roll-back.html
угу...

PILOT
explain SELECT BENCHMARK(100000000000,ENCODE('hello','goodbye'));

Я так думаю, запросы вводятся не для того, чтобы их ПРОВЕРИТЬ, а для того, чтобы их потом ИСПОЛНЯТЬ.
 
Сверху