2012-06-01 23 views
5

Bu yüzden, bir sql sorgusunun nerede olduğunu söyleyerek alan adlarını ve değerlerini dışarı çıkarmak, değiştirmek ve daha sonra tekrar bir araya getirmek için PHP kullanmalıyım.PHP ile SQL'i yorumlama

Diyelim ki, bu dize verdiğimi varsayalım: field='value' AND field2<7 Alan ve alan2'yi alan adları olarak tanımalıyım, daha sonra field() işlevini kullanarak besleyin ve bunları sorguya geri koyun. 'Değer' ve 7 ile aynı şeyler, ancak value() işlevi aracılığıyla onları besleyin. Ayrıca, her bir değerin hangi alanla ilişkilendirildiğini bilmek de yardımcı olacaktır.

Bunu yapmak için birkaç bin satırlık bir kod almayacak bir yolu var mı? Ben açık kaynak ve oldukça iyidir php-sql-parser projeyi kullandım table.field BETWEEN 7 AND 10 veya field<7 AND (field2=3 OR field3=4)

+0

Yeniden kullanılabilir bir şeye mi ihtiyacınız var ya da sadece dize değiştirmeleriyle değiştirebilir misiniz? – acme

+1

Bağlam nedir? Alan sınırlanırsa, normal bir ifade kullanabilirsiniz. Herhangi bir rastgele sorguyla çalışmanız gerekirse, bir SQL ayrıştırıcısı kullanmanız gerekir. – Matthew

+0

Çok çeşitli olası girişler için çalışmalı, eğer işe yarayacak dize değişimleri ile yapabiliyorsan, ama dize değiştirilmesinden daha karmaşık olduğunu düşünüyorum. –

cevap

4

:

Ben gibi şeyler de dahil olmak üzere farklı olası girişler, bir sürü çalışmak gerekir.

+0

SQL'i hızla ayrıştırabilir mi? Zaman burada bir sorundur, sorgu başına birkaç saniye sürmesi bir sorun olur. –

+0

Bilmiyorum. İş gereksinimleriniz için yeterince hızlı olup olmadığını görmek için uygulamanızda bazı profiller yapmanız gerekecektir. – mellamokb

+1

Sitede sağlanan örnek komut dosyası bir hız test cihazına sahiptir. İşte bu sample.php' ile elde edilen ayrıştırma zamanları: ** Basit sorgu 0.0025022029876709 saniye **, ** Çok basit bir ifade 0,0020349025726318 saniye **, ** Çok karmaşık bir ifade 0,025777816772461 saniye ** – Deltik