mysql php ile MultiQuery dize bölmek

3 Cevap php

Ben bir veritabanı phpMyAdmin ile yapılan bir dökümü ayrıştırmak ve sorguları tüm yürüteceğini fonksiyonunu yeniden yapmak istiyorum.

Zaten sorguyu yapan bir MySQL sınıf var, ama sadece tek bir sorgu yapmak için nasıl bilir. Ben tek sorguları içine dosya içeriğini bölmek için bir yol arıyorum.

Ben preg_split ile oynamaya çalıştım ... ama çalışmak için başardı vermedi.

$queries = preg_split('/[(.+);\s*\n/', $content, -1, PREG_SPLIT_NO_EMPTY);

Düzenli ifadeler ile çok iyi değilim. Amacım gerçekleştirmek için bir yolu var mı?

3 Cevap

Sonunda doğru regex bulmayı başardılar:

$queries = preg_split('/[.+;][\s]*\n/', $content, -1, PREG_SPLIT_NO_EMPTY);

o sonra sorgu böler; imzalamak ve sorgu birden fazla satır üzerinde yayılır veya sorgu içeriyorsa bile kırmak değildir; Bir satırın sonunda onu arar beri.

Düzenli ifadeler ile sql ayrıştırmak denemek gerekmez. ne ; Bir yerde bir sql dizesi içinde varsa?

i http://pear.php.net/package/SQL_Parser denemek, veya orada other php mysql parsers herhangi olacaktır. SO PHP MySQL SQL parser (INSERT and UPDATE) Burada ayrıca bkz.

Ben $ içerik prosedürleri, işlevleri veya tetikleyiciler sakladığınız zaman yukarıdaki yorumlarda bölme kötü dizeleri yapacak düşünüyorum.