在向自己介绍 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
是 a 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 参数”是什么意思?这有关系吗?这是否意味着我没有使用存储过程?长度似乎是可选的,尽管它的解释中没有说明。提供它有好处吗?
如您所见,我对此很陌生,只是想弄清楚它。非常感谢你