Bir tamsayı üzerinde dolgu tespit ve bir dize olarak tedavi nasıl?

0 Cevap php

Ben değişken bir SQL sorgusu kullanılmak üzere hazırlamak için bu işlevi vardır:

function sqlize($mInput)
{
    if (!isset($mInput))
        $mInput = "null";

    elseif (strtolower($mInput) == "null") { }

    elseif (is_numeric($mInput)) { }

    elseif (is_string($mInput))
    {
        $mInput = trim($mInput);
        $mInput = addslashes($mInput);
        $mInput = '"' . $mInput . '"';
    }
    else
        $mInput = "null";
    return $mInput;
}

Ben bir "varchar alan" gidiyor bir dize "0004", var, is_numeric tarafından yakalanmadı edilir ve "0004", "4" olarak değil kaydedilir. Dolgu algılar ve bir dizge olarak işlemek için bir yolu var mı?

Teşekkür ederiz!

EDIT

Cesar ve webbiedave ipuçları dayalı Doğru cevap:

    function sqlize($mInput)
    {
        switch(TRUE)
      {
            default: break;
            case (!isset($mInput)): $mInput = "null"; break;
            case (strtolower($mInput) == "null"): break;
            case (is_numeric($mInput)):
                if ((string) intval($mInput) === (string) $mInput)
                    break;
            case (is_string($mInput)):
                    $mInput = trim($mInput);
                    #v2
                    $mInput = $_SESSION['oCore']->oDatabase->sanatize($mInput);
// ADOdb's oDb->qstr();                 
                    # v1
                    #$mInput = addslashes($mInput);
                    #$mInput = '"' . $mInput . '"';
                    break;
        }
        return $mInput;
}

0 Cevap