Мой класс PDO имеет функцию под названием bindParams, которая имеет 2 параметра: setValues и SetType,Автоматическое назначение типа PDO
Результат Выход должен быть как:
$insertNews->bindParam(':news_title', $newsTitle, PDO::PARAM_STR);
Итак, я ищу, чтобы автоматически назначить "PDO :: PARAM_STR" до их значений, которая в моем случае "news_title" является переменной setValues, и "PDO :: PARAM_STR" является SetType:
public final function bindParams($setValues=array(), $setType = null){
//print_r($setValues);
foreach ($setValues as $getVal) {
echo $getVal.'<br />';
if (is_null($setType)) {
switch ($getVal) {
case is_int($getVal):
echo $getVal.' is INT<br />';
$setType = PDO::PARAM_INT;
break;
case is_bool($getVal):
echo $getVal.' is BOOL<br />';
$setType = PDO::PARAM_BOOL;
break;
case is_null($getVal):
echo $getVal.' is NULL<br />';
$setType = PDO::PARAM_NULL;
break;
default:
echo $getVal.' is STR<br />';
$setType = PDO::PARAM_STR;
}
}
}
} // end bindParams()
$con = new crud($dbCon);
$con->insert('ban_ip', array('visitor_type', 'ip'));
$con->bindParams(array('Visitor_Type', 1));
в результате выход:
VISITOR_TYPE является STR
Это не зацикливание другое значение, которое 1.
EDIT: Правильный код:
Я думаю, что это работает:
public final function bindParams($setValues=array(), $setType = null){
$combine = array_combine($this->insertedKeys, $setValues);
foreach ($combine as $getKey => $getVal) {
//echo 'key '.$getKey.' val '.$getVal.'<br />';
switch ($getVal) {
case is_int($getVal):
echo $getVal .' is INT<br />';
$setType = 'PDO::PARAM_INT';
break;
case is_bool($getVal):
$setType = 'PDO::PARAM_BOOL';
echo $getVal .' is BOOL<br />';
break;
case is_null($getVal):
echo $getVal .' is NULL<br />';
$setType = 'PDO::PARAM_NULL';
break;
default:
echo $getVal .' is STR<br />';
$setType = 'PDO::PARAM_STR';
break;
}
echo "this->stmt->bindParams($getKey, $getVal, $setType)<br />";
}
} // end bindParams()
Результат:
Visitor_Type is STR
this->stmt->bindParams(visitor_type, Visitor_Type, PDO::PARAM_STR)
1 is INT
this->stmt->bindParams(ip, 1, PDO::PARAM_INT)
И если я не ошибаюсь, я должен выполнить код без эхо-сигнала для его запуска.
Спасибо за вашу помощь
Использование 'gettype' было бы лучше для идентификации типов и предотвращения любой неоднозначности типа - http://php.net/gettype – Clay
Да, я ищу только 4 параметра ТОЛЬКО: NULL, INT, STR или BOOL, .. Я никогда не использовал остальных в моем bindParams – Fred