私はPDOにブール値を渡す際に問題が発生しているので、私は尋ねます。PHPのis_boolはINTとBOOLの違いをどのように伝えますか?
この機能は私のTrue/Falseのを与える:
public function getBoolVal($var){
if (!is_string($var)) return (bool) $var;
switch (strtolower($var)) {
case '1':
case 'true':
case 'on':
case 'yes':
case 'y':
return true;
default:
return false;
}
}
私はこのようなラインを持つ関数内のパラメータにデータをバインドしています:
$this->db->bind('active', (bool)$this->getBoolVal($pa['active']));
とそのbind
関数内である:
foreach ($this->parameters as $param => $value) {
$type = PDO::PARAM_STR;
switch ($value[1]) {
case is_int($value[1]):
$type = PDO::PARAM_INT;
break;
case is_bool($value[1]):
$type = PDO::PARAM_BOOL;
break;
case is_null($value[1]):
$type = PDO::PARAM_NULL;
break;
}
// Add type when binding the values to the column
$this->sQuery->bindValue($value[0], $value[1], $type);
}
値がバインドされている場合は、私のようにPDO::PARAM_BOOL
を取得タイプが入力値$pa['active']
が1である場合、入力が0の場合は常にPDO::PARAM_INT
が得られます。は、私が欲しいものを知っていますか?または、どうすればこの問題を解決できますか?
ようにコードを変更することができ、私は、データベース内のtinyint型のフィールドで離れて行ってきました。整数を使用することは、私が扱っている外部データで「安全」であることがわかります。 - 他には言われても幸いです:) – Warren
文字列としてすべての値をバインドしてみませんか? –