sql >> データベース >  >> RDS >> Mysql

必要以上に多くのPDOパラメーターが提供されているかどうかをPHPでチェックする方法

    そうです、その状況では例外がスローされたり、エラーが発生したりすることはないようです。 PDOStatement ::execute() 少なくともfalseを返します 自分でロールできるように:

    $dsn = "mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4";
    $options = [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES => false,
    ];
    $pdo = new PDO($dsn, $dbuser, $dbpass, $options);
    
    $sql = 'SELECT ? AS foo';
    $stmt = $pdo->prepare($sql);
    
    if (!$stmt->execute([1, 2])) {
        throw new InvalidArgumentException('Failed to execute statement');
    }
    while ($row = $stmt->fetch()) {
        var_dump($row);
    }
    

    理想的ではありませんが...



    1. ユーザーwww-dataの接続アクセスが拒否されました

    2. MS Access(VBA)のADODBを介したMySQLストアドプロシージャの出力パラメータは、あるコンピュータでは正しく、別のコンピュータではランダムです。

    3. Bツリーとビットマップデータベースのインデックス

    4. SQLクエリ、平均上昇、および最も多くのピークを上昇したペア