pgSQL のプリペアド ステートメントを紹介しながら、いくつかのクエリの結果を返すことに成功しました。ただし、いくつか質問があります。
次のクエリがあるとします。
$w_ft = "36";
$sth = $dbh->prepare("SELECT * FROM main_products_common_dimensions WHERE w_ft = :w_ft");
$sth->bindParam(':w_ft', $theId, PDO::PARAM_INT);
$sth->execute();
$result = $sth->fetchAll();
main_products_common_dimensions
テーブルの列が であっても、character_varying
使用すると同じ/正しい結果セットが返されることに気付きました
$w_ft = 36;
...
$sth->bindParam(':w_ft', $w_ft, PDO::PARAM_INT);
と
$w_ft = "36";
...
$sth->bindParam(':w_ft', $w_ft, PDO::PARAM_STR);
と
$w_ft = "36";
...
$sth->bindParam(':w_ft', $w_ft, PDO::PARAM_INT);
と
$w_ft = 36;
...
$sth->bindParam(':w_ft', $w_ft, PDO::PARAM_STR);
つまり、どのようにパラメーターをバインドし_INT
たり_STR
、変数 (整数または文字列) を設定したりしても、データは正しく返されます。これは正常な動作ですか?
http://php.net/manual/en/pdostatement.bindparam.phpから、パラメーターのデータ型が説明されていることがわかります
PDO::PARAM_* 定数を使用したパラメーターの明示的なデータ型。ストアド プロシージャから INOUT パラメーターを返すには、ビットごとの OR 演算子を使用して、data_type パラメーターの PDO::PARAM_INPUT_OUTPUT ビットを設定します。
「ストアド プロシージャから INOUT パラメータを返す」とはどういう意味ですか? これは関連していますか?これは、ストアド プロシージャを使用していないことを意味しますか? 長さはオプションのようですが、説明には示されていません。提供するメリットはありますか?
ご覧のとおり、私はこれにまったく慣れておらず、頭を悩ませようとしています。どうもありがとうございました