Bu Mysql Yardımcısı sınıf ile herhangi bir sorun?

0 Cevap php

I have this function in my database class. It accepts 3 parameters:

  • Sorgu
  • hangi çalıştırmak için sunucu config saklanır adıyla tanımlanır
  • sql sorgu içine alıntı argümanları bir dizi

örnek çağrı:

$toplist = MyDbClass->q('SELECT * FROM movies WHERE score > ?','slaveserver1',array(100));

Burada kod geliyor ...

/*
 * @param the sql query. may be pure sql or having ? as placeholders for variables that are passed in the 3rd param, not enquoted
 * @param name of the link (slave or master server or other arbitrary database)
 * @param optional array of vars that will be filled in where the ? signs in the query are
 */
public function q($sql,$name,$vars=false) {
    // lets see if the link to the server with name $name has already been initialised, if not lets do it
    if(!isset($this->links[$name])) {
        $this->initialize($name);
    }
    // if variables have been passed, lets fill them into the query
    if($vars !== false) {
        // first real scape them all according to the correct link
        for($i=0;$i<count($vars);$i++) {
            $vars[$i] = mysql_real_escape_string($vars[$i],$this->links[$name]);
        }
        // now escape all actual % signs so they are not used as placeholders vor vsprintf
        $sql = str_replace('%','%%', $sql);
        // no add '' quotes arround every placeholder and fill in
        $sql = str_replace('?','\'%\'', $sql);
        $sql = vsprintf($sql,$args);
    }
    // now execute the parsed query on the correct server
    return mysql_query($sql,$this->links[$name]) or die(mysql_error($this->links[$name]));
}

Şimdi benim sorular şunlardır:

benim kod ile herhangi bir sorun var mı? espacially:

  • Sorguda argümanlar etrafında '' tırnak koyarak değil çalışma yapabilirsiniz herhangi bir durumlar var mı?
  • (ben zaten giriş sorguda qutoes koyarsanız ...) benim sorguları where score > ''100 '' gibi çift tırnaklı malzeme ile biten benim işlevi önlemek için bazı zarif yolu yoktur.
  • Eğer fonksiyonun ne düşünüyor? Bunu yapmanın iyi bir yolu?

0 Cevap