1

我正在尝试将参数正确绑定到以下语句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

第 69for行是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 问题)。

4

2 回答 2

0

我的第一篇文章...我在这里可能是错的,但我相信 $parrs 没有 [0] 或 [1] 索引,因为您使用命名索引 '%a%' 和 '%Welcome%' 传递它.

您可以尝试分别用 %a% 和 %Welcome% 替换 [0] 和 [1],或者使用数组的数字索引。

于 2013-03-05T14:08:42.717 回答
0

您根本不需要“正确的绑定方式”,也不需要整个这个函数。只需直接传递一组参数即可执行:

$params = array('%a%', '%Welcome%');
$stmt->execute($params);

它将大大缩短您的代码而没有任何缺点。

请保持您的代码简洁明了。
无用的复杂性将使其难以支持和维护。

于 2013-03-05T14:16:05.933 回答