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

私の最初の投稿...ここで間違っている可能性がありますが、'%a%' と '%Welcome%' の名前付きインデックスを渡しているので、$parrs の [0] または [1] インデックスはないと思います。 .

[0] と [1] をそれぞれ %a% と %Welcome% に置き換えるか、配列に数値インデックスを使用してみてください。

于 2013-03-05T14:08:42.717 に答える
0

「適切なバインディング方法」も、この機能全体もまったく必要ありません。パラメータの配列を直接渡して実行するだけです。

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

欠点なしでコードを劇的に短縮します。

コードはクリーンでシンプルにしてください。
無用な複雑さは、サポートと保守を困難にします。

于 2013-03-05T14:16:05.933 に答える