Убрать / удалить все значения из запроса MySQL, используя регулярное выражение PHP?
Как удалить / удалить все значения из запросов MySQL с помощью PHP Regex?
Пример:
оригинал: SELECT id, abc FROM mytable WHERE id IN (12, 15)
в полоску: SELECT id, abc FROM mytable WHERE id IN ()
оригинал:
SELECT ut.id, IF(stagiaire_devis.id IS NOT NULL, CONCAT(ut.prenom, ' (my lovely)', ut.prenom) AS value FROM quality AS uq, avocate, utility AS ut LEFT JOIN stagiaire_devis ON (stagiaire_devis.id_devis='1293049' AND stagiaire_devis.id_utilisateur=ut.id) WHERE uq.id_utilisateur = ut.id AND avocate.id_utilisateur = ut.id AND avocate.deleted = 0 AND avocate.id_avocat_liste_cabinet = 7 AND uq.id_liste_qualite IN (5,2,9) AND uq.actif = 2 ORDER BY ut.prenom
в полоску:
SELECT ut.id, IF(stagiaire_devis.id IS NOT NULL, CONCAT(ut.prenom, '', ut.prenom) AS value FROM quality AS uq, avocate, utility AS ut LEFT JOIN stagiaire_devis ON (stagiaire_devis.id_devis='' AND stagiaire_devis.id_utilisateur=ut.id) WHERE uq.id_utilisateur = ut.id AND avocate.id_utilisateur = ut.id AND avocate.deleted = AND avocate.id_avocat_liste_cabinet = AND uq.id_liste_qualite IN () AND uq.actif = ORDER BY ut.prenom
Я не могу найти правильное регулярное выражение:(
1 ответ
Вы не можете сделать это с любым регулярным выражением, потому что SQL не является обычным языком.
Для выполнения этой задачи вам нужно использовать анализатор SQL.
Изменить относительно вашего комментария:
Хорошо, вам нужно установить своего рода "отпечаток пальца" для запроса, чтобы можно было группировать запросы, когда они отличаются только постоянными значениями.
Это может сделать инструмент pt-query-digest. Он работает с журналом медленных запросов или общим журналом, но не с журналом ошибок. Но это, вероятно, не сложно использовать awk
или что-то, чтобы преобразовать ваш журнал ошибок в формат, который может прочитать pt-query-digest.