PDOStatement::debugDumpParams
(PHP 5 >= 5.1.0, PHP 7, PECL pdo >= 0.9.0)
PDOStatement::debugDumpParams — SQL プリペアドコマンドを出力する
説明
public PDOStatement::debugDumpParams ( ) : void
プリペアドステートメントに含まれる以下のような情報を直接出力します。
使用する SQL
クエリ、使用するパラメータ数
(Params
)、パラメータリスト、パラメータ名、
パラメータの型 (paramtype
) をあらわす整数値、
そのキーの名前あるいは位置、そしてクエリ内での位置
(PDO ドライバがサポートしている場合のみ。サポートしていない場合は
-1 となります) 、型 (param_type
) を表す整数値、boolean 値 is_param
。
これはデバッグ用関数です。結果を標準出力にそのまま出力します。
ヒント ブラウザに直接結果を出力する すべてのものと同様に、出力制御関数 を使用してこの関数の出力をキャプチャーし、(例えば)文字列 (string)に保存することが可能です。
これは、出力時にステートメント内にあるパラメータのみを出力します。 追加パラメータはステートメントに格納されておらず、出力されません。
返り値
値を返しません。
例
例1 名前つきパラメータを用いた PDOStatement::debugDumpParams() の例
<?php/* プリペアドステートメントを、PHP の変数をバインドして実行します */$calories = 150;$colour = 'red';$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour');$sth->bindParam(':calories', $calories, PDO::PARAM_INT);$sth->bindValue(':colour', $colour, PDO::PARAM_STR, 12);$sth->execute();$sth->debugDumpParams();?>
上の例の出力は以下となります。
SQL: [96] SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour Params: 2 Key: Name: [9] :calories paramno=-1 name=[9] ":calories" is_param=1 param_type=1 Key: Name: [7] :colour paramno=-1 name=[7] ":colour" is_param=1 param_type=2
例2 名前なしパラメータを用いた PDOStatement::debugDumpParams() の例
<?php/* プリペアドステートメントを、PHP の変数をバインドして実行します */$calories = 150;$colour = 'red';$name = 'apple';$sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?');$sth->bindParam(1, $calories, PDO::PARAM_INT);$sth->bindValue(2, $colour, PDO::PARAM_STR);$sth->execute();$sth->debugDumpParams();?>
上の例の出力は以下となります。
SQL: [82] SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ? Params: 2 Key: Position #0: paramno=0 name=[0] "" is_param=1 param_type=1 Key: Position #1: paramno=1 name=[0] "" is_param=1 param_type=2
変更履歴
バージョン | 説明 |
---|---|
7.2.0 | PDOStatement::debugDumpParams() は、データベースに送られた
完全な、(プレースホルダーをバインドされた値で置き換えた) 生のSQLクエリを返すようになりました。 これは、プリペアドステートメントがエミュレートされていた場合のみ利用できることに注意してください。 |
参考
- PDO::prepare() - 文を実行する準備を行い、文オブジェクトを返す
- PDOStatement::bindParam() - 指定された変数名にパラメータをバインドする
- PDOStatement::bindValue() - 値をパラメータにバインドする