我正在尝试将参数正确绑定到下面有Function
的语句。我传递了一个关联数组,value=>datatype
。
我在尝试此操作时遇到错误:Notice: Undefined offset: 0 in db.class.php on line 69 Notice: Undefined offset: 1 in db.class.php on line 69
第69行是for
Function
行
我该如何解决这个问题?和/或我是否应该这样做呢?
这是Function
protected function ConvertParams($stmt, $params){
$parrs = $params;
if(is_array($parrs)){
$parrCt = count($parrs);
echo '<pre>';
print_r($parrs);
echo '</pre>';
echo '<hr />';
for($i = 0; $i < $parrCt; ++$i){
switch ($parrs[$i][1]){
case 'string':
$stmt->bindParam($i + 1, $parrs[$i][0], PDO::PARAM_STR);
break;
case 'int':
$stmt->bindParam($i + 1, $parrs[$i][0], PDO::PARAM_INT);
break;
case 'boolean':
$stmt->bindParam($i + 1, $parrs[$i][0], PDO::PARAM_BOOL);
break;
case 'lob':
$stmt->bindParam($i + 1, $parrs[$i][0], PDO::PARAM_LOB);
break;
default:
$stmt->bindParam($i + 1, $parrs[$i][0]);
}
}
}
}
这是array
:
$db->Params = array('%a%'=>'string', '%Welcome%'=>'string');
请假设我正确连接到数据库,并且查询正确执行(减去此bindParam问题)。
答案 0 :(得分:0)
我的第一篇帖子......我可能在这里错了,但我相信没有[0]或[1] $ parrs索引,因为你传递的命名为'%a%'和'%欢迎%”。
您可以尝试分别用%a%和%Welcome%替换[0]和[1],或者使用数组的数字索引。
答案 1 :(得分:0)
你根本不需要“正确的绑定方式”,也不需要整个这个功能。 只需直接传递一系列参数即可执行:
$params = array('%a%', '%Welcome%');
$stmt->execute($params);
它会大大缩短你的代码而没有任何缺点。
请妥善保管您的密码 无用的复杂化将使其难以支持和维护。