Bunu yapmak için PHP ile yazılmış bir hafif sql ayrıştırıcı sınıf var mı?

0 Cevap php

Atlama ve kendi atmadan önce, ben ilk kez burada sormak düşündüm.

Ben için rastgele SQL komutları bazı temel ayrıştırma yapmak için arıyorum:

  1. 'SEÇ ait (herhangi sorgular dahil) kullanılmaktadır alan adlarını inceleyin
  2. (herhangi bir alt sorgular dahil) 'Katılın kullanılmakta olan alan adlarını inceleyin
  3. (herhangi bir alt sorgular dahil) sorguda kullanılan tabloların adlarını inceleyin

Ben orada bazı SQL çözümleyici sınıfları gördük, ancak yukarıda açıklanan kullanım durumları için çok 'ağır' vardır.

Gereken işlevsellik en az bazılarını hafif sınıf farkında mı?

En kötü durum senaryosu, ben bir ayrıştırıcı yazmak zorunda kalırsanız, ne nasıl herhangi bir ipucu, (normalde, bir ayrıştırıcı yazmak için, ben normalde PHP bulunmayan araçlar için çare olurdu) böyle bir ayrıştırıcı yazma en iyi yolu olacaktır Bu ayrıştırma yapmak için 'kaba ve hazır' sınıf yazmak?

//rough sketch
<?php
class SqlParser()
{
    protected $sqlstr;
    protected $m_tablenames = array();
    protected $m_fieldnames = array();

    public function __construct($sql){
       $this->sqlstr = $sqlcmd;
       $this->parseString($sqlstr);
    }

    public function __destroy(){}
    public function getTableNames(){ return m_tablenames; }
    public function getFieldNames(){ return m_fieldnames; }

    private function parseString($sql)
    {
        //TODO
    }
}

?>

Ben ayrıştırma SQL lehçesi olmayı tercih ediyorum mümkün olduğunca (yani belirli bir SQL lehçesi veya db belirli SQL bağlı değil) agnostik.

Bu mümkün değilse, o zaman kullanacağınız SQL lehçesi PostgreSQL.

0 Cevap