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