[英]How to use prepared statements with Postgres in PHP
下面的代碼是我最終用股票價格更新數據庫的准備工作。 我要做的是根據其行號獲取fund_name 的值。 根據輸入值的行找到該行。 echo 語句現在只適合我,在我修改它以更新數據庫之前查看返回的內容。
下面的代碼有點工作。 它將返回我輸入的價值金額 ($price[$i]) 和它所在的計數 ($x)。 $x 確實正確對應於我輸入值的行。 但是,當我嘗試執行 SELECT 語句時,如果 select 語句中有變量,則不會返回任何內容。 如果我將 SELECT 語句中的 $x 更改為一個數字,即 3,它將返回第 3 行上的正確fund_name。我嘗試將fund_line = '$x' and fund_line = $x
直接放在 SELECT 語句中. 我也試過fund_line =?
當使用 $x 作為$update_prices->execute([$x])
。 使用變量時我沒有收到錯誤消息,fund_name 沒有返回任何內容,而其他 echo 語句$price[$i]
和$x
返回我期望的結果。
有什么我想念的嗎?
$x = 0;
$update_prices = $pdo->prepare ("SELECT fund_name FROM funds WHERE fund_name = (SELECT fund_name FROM
(SELECT fund_name, ROW_NUMBER () OVER (ORDER BY fund_name ASC) AS fund_line
FROM (SELECT fund_name FROM funds) cost) AS cost_sorted WHERE fund_line = $x);");
$update_prices->execute();
if(isset($_POST['price_updates'])) {
$price = $_POST['price'];
$priceSize = count($price);
for($i=0; $i < $priceSize; ++$i) {
$x += 1;
if ($price[$i] > 0){
echo "x$: ".$x.' is the line #</br>';
echo '$'.$price[$i].' is the amount</br>';
while ($row = $update_prices->fetch()) {
echo $row['fund_name'].'</br>';
}
}
}
}
你查詢沒問題。 您可以使用以下參數傳遞?
:
$x = 0;
$update_prices = $pdo->prepare ("SELECT fund_name FROM funds WHERE fund_name = (SELECT fund_name FROM
(SELECT fund_name, ROW_NUMBER () OVER (ORDER BY fund_name ASC) AS fund_line
FROM (SELECT fund_name FROM funds) cost) AS cost_sorted WHERE fund_line = ?);");
$update_prices->execute(array($x));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.