2

質問:Fat Free Frameworkでより複雑なSQLクエリを実行するためのより簡単で安全な方法はありますか?私が持っている解決策はPDOを使用することですが、例外を簡単にスローできないため、面倒で醜いです。

バックグラウンド:

Fat Freeは、データベースを「安全に」操作するためのAXONクラスを提供しますが、AXONが処理できるより複雑なクエリを実行したいと思います。

DBクラスは公開されていますが、安全性が保証されていないクエリを作成するには、「mysql_real_escape_string()」を使用する必要があります。したがって、ソリューションは公開されたPDOを使用しているように見えます。

デフォルトのエラー処理として公開されたPDOは、苦痛であり、醜いコードになります。

        $pdo = F3::get('DB')->pdo;
        $sql = 'INSERT INTO config(config_name, config_value, comments) VALUES( :config_name , :config_value , :config_comments)
                     ON DUPLICATE KEY UPDATE config_value= :config_value2';
        if (!$stmt = $pdo->prepare($sql)) {
            $errorInfo = $pdo->errorInfo();
            trigger_error('PDO Error: ' . $pdo->errorCode(). ' ' . $errorInfo[2]);
            exit();
        }

        $stmt->bindValue(':config_name', $field, PDO::PARAM_STR);
        $stmt->bindValue(':config_value', $value, PDO::PARAM_STR);
        $stmt->bindValue(':config_comments', $comments, PDO::PARAM_STR);
        $stmt->bindValue(':config_value2', $value, PDO::PARAM_STR);
        if ($stmt->execute() === false) {
            $errorInfo = $stmt->errorInfo();
            trigger_error('PDO Error: ' . $stmt->errorCode(). ' ' . $errorInfo[2]);
            exit();
        }

それで、私が見逃しているより良いものはありますか?または、AXONはより複雑なクエリを処理できますか?

4

1 に答える 1

2

DBオブジェクトを調べて、パラメーター化されたクエリを作成しましたか?ここでドキュメントを表示し、[パラメータ化されたクエリ]にタブで移動できます。

PDOを直接いじるよりも少しきれいです。

DB::sql(
    'SELECT * FROM users WHERE userID=:uID',
    array(':uid'=>array(F3::get('POST.userID'),PDO::PARAM_INT))
);
于 2012-07-12T01:58:52.300 に答える