簡體   English   中英

如何在 PHP 中將准備好的語句與 Postgres 一起使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM