У меня есть эта функция для подготовки переменной для использования в запросе 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;
}