2017-04-17 79 views
0

我使用的是PHP 7,並調用plsql過程並將post參數傳遞給它。下面的代碼將0傳遞給過程。將函數的返回值傳遞給另一個函數php 7

@oci_bind_by_name($stmt, ":py", trim($_POST["py"]), -1); 

但是,當我更改下面的代碼,它通過post參數的值。

$trimmed = trim($_POST["py"]); 
@oci_bind_by_name($stmt, ":py", $trimmed, -1); 

有人可以解釋爲什麼嗎?

+0

絕對是崗位價值傳遞爲0,然後在第二個代碼的測試用例中更改 – Hossam

+0

我在調用過程之前使用了'var_dump',它不是0. – Hikmat

+0

您不應該使用'@'來掃描地毯下的錯誤。如果你沒有使用它,你會看到這個問題。 – apokryfos

回答

3

根據docs

bool oci_bind_by_name (resource $statement , string $bv_name , mixed &$variable [, int $maxlength = -1 [, int $type = SQLT_CHR ]]) 
//                ^^^^^^^^^^^^^^^^ 

,你可以看到oci_bind_by_name預計,第三個參數作爲引用傳遞,而在你的第一個情況下,你是按值

+0

@Hikmat https://pecl.php.net/package-changelog.php?package=oci8 https://bugs.php.net/bug.php?id=71148我認爲這些鏈接將有助於 – hassan

相關問題