在向pgSQL準備語句進行自我介紹時,我已成功返回了一些查詢的結果。但是,我有幾個問題。無論指定或指定什麼數據類型,bindParam都能正常工作
考慮以下查詢:
$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參數」是什麼意思?這是相關的嗎?這是否意味着我沒有使用存儲過程?長度似乎是可選的,儘管這在解釋中沒有說明。提供它有好處嗎?你可以看到,我對此很陌生,只是試圖讓我的頭腦發現它。非常感謝您
'$ theId'在'$ sth-> bindParam ....'中不應該是'$ w_ft'? – Tikkes
@Tikkes aha,是的,我在最後一分鐘改變了這一點,但錯過了bindparam。修復...謝謝! – 1252748
@Tikkes啊,不,我很抱歉。我沒有說清楚。我在我使用的實際代碼中有這個正確的。問題不在於它沒有工作,而在於(現在已更正且準確的)代碼工作。同樣感謝 – 1252748