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

  • Автор темы Автор темы Leshas0
  • Дата начала Дата начала

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?
 
или когда в mysql поступает sql-запрос, mysql его проверяет и если найдена ошибка в составленном запросе, возвращает 0?
по-моему, ты эту функцию написал в своем посте
 
хотя лично я затрудняюсь придумать случай, когда может потребоваться такая проверка
 
в скрипте есть возможность создавать фильтры.
фильтр представляет собой просто sql-запрос.
их может быть много.
эти запросы будет составлять человек, который будет администрировать сайт
 
запросы можно выполнять от имени пользователя которому даны привелегии только на select
но сама идея кастомных запросов мне не нравится, хотя в определенных случаях это может быть и оправдано
 
должно быть одно ограничение: тот человек, который будет писать запросы, не будет хотеть сломать базу. И чтобы было очень маловероятно, что он сделает это случайно.

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

спасибо!
 
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'));

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