Как обнаружить заполнение на целое число и рассматривать его как строку? - PullRequest
0 голосов
/ 30 апреля 2010

У меня есть эта функция для подготовки переменной для использования в запросе SQL:

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;
}

У меня есть строка "0004", которая идет в "поле varchar", определяется как is_numeric и сохраняется как "4", а не "0004". Есть ли способ обнаружить заполнение и обработать его как строку?

Спасибо!

EDIT

Правильный ответ, основанный на советах Cesar и webbiedave:

    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;
}

1 Ответ

3 голосов
/ 30 апреля 2010

вместо is_numeric() используйте (int)$var == $var
Я видел красивое использование переключателя, должно быть что-то вроде этого:

function sqlize($mInput)
{
    switch(TRUE)
    {
        default:
        case (!isset($mInput)): $mInput = "null"; break;
        case (strtolower($mInput) == "null"): break;
        case (is_numeric($mInput)): break;
        case (is_string($mInput)):
            $mInput = trim($mInput);
            $mInput = addslashes($mInput);
            $mInput = '"' . $mInput . '"';
            break;
    }
    return $mInput;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...