Fonksiyon az üç argüman kabul etmez

0 Cevap php

Ben sürece en az üç argüman onu geçmek gibi çalışıyor başkasının veritabanı bağlantısı PHP fonksiyonu ile çalışıyorum. Ben bunu iki argüman iletirseniz, daha sonra apache log diyor ki:

mysql_real_escape_string() expects parameter 2 to be resource, null given

Ben şöyle bir SQL sorgusu almak işlevi gerekir:

$sql = DatabaseManager::prepare("SELECT * FROM sometable WHERE somevar = %d", $var);

ve güvenli yürütülmesi için hazırlamak. Birisi iki argüman kabul yapmak yardımcı olabilir?

public static function prepare($query = null) { // ( $query, *$args )

    $args = func_get_args();

    array_shift($args);

    // If args were passed as an array (as in vsprintf), move them up
    if ( isset($args[0]) && is_array($args[0]) ){
        $args = $args[0];
    }

    $query = str_replace("'%s'", '%s', $query); // in case someone mistakenly already singlequoted it
    $query = str_replace('"%s"', '%s', $query); // doublequote unquoting
    $query = str_replace('%s', "'%s'", $query); // quote the strings

    for($i=0; $i<count($args); $i++){
        $args[$i] = mysql_real_escape_string($args[$i], self::$currentCon);
    }

    //array_walk($args, array(&$this, 'mysql_real_escape_string'));

    return @vsprintf($query, $args);
}   

Bir ton teşekkürler!

EDIT

Deceze işaret ettiği gibi, bu konuda self::$currentCon) ve bir veritabanı bağlantısı geri geliyor anlamına gelir null

Ben bu birden çok kez denedim. Hala neden bu işleri merak:

$sql = DatabaseManager::prepare("SELECT * FROM sometable WHERE id = ".$somevar); 

ancak bu başarısız:

$sql = DatabaseManager::prepare("SELECT * FROM sometable WHERE somevar = %d", $var); 

Bu nasıl etkileyecek self::$currentCon)?

0 Cevap