簡體   English   中英

“ mysqli select”准備語句中的php函數錯誤

[英]Error with php function in “mysqli select” prepare statement

我創建了一個函數,以使用left-join和prepare語句從數據庫中調用某些數據。

這是php函數的示意圖:

function getStock()
{
    global $mysqli;
        $stmt = $mysqli->prepare 
            ("SELECT     products.`product_name`, product_category.`price`
              FROM products    
                LEFT JOIN  product_category
                ON         products.product_category_id = product_category.id

                WHERE      products.id = ?");

    $id=3; 
    $stmt->bind_param("s", $id);
    $stmt->execute();
    $stmt->fetch();
    return $stmt;

在視圖頁面中,我這樣做:

    $resultsTicket = getStock();
    $results = $resultsTicket->num_rows;
    var_dump($results);
    if ($resultsTicket->num_rows > 0) {
        while($resultsTicket->fetch()){

但是在var_dump中我只能得到int(0)

我不再知道如何在var_dump旁邊找到錯誤。 請幫我上面的代碼。 謝謝!

[更新]

$query = "SELECT     products.`product_name`, product_category.`price`
          FROM       products    
          LEFT JOIN  product_category
          ON         products.product_category_id = product_category.id
          WHERE      products.id = 3;

if ($stmt = $mysqli->prepare($query)) {     
    $stmt->execute();
    $stmt->bind_result($product_name, $price);
    //$stmt->fetch();
    while ($stmt->fetch()) {
    printf ("%s (%s)\n", $product_name, $price);
    }   
        $stmt->close();}
    return $stmt;

}

在上面的代碼中,我從數據庫中獲得一個數據/行。

問題是您正在函數中執行和獲取,但返回了該語句。 您可以進行兩種可能的更改。

  1. 在函數中執行並獲取,然后循環遍歷結果並返回表示結果的數組。

  2. 從函數返回語句,並在使用函數結果的位置執行執行和提取。

我認為您已經獲得了足夠的幫助,如果您仍然不確定如何編寫代碼,請執行以下操作:

單條記錄

$query = "SELECT     products.`product_name`, product_category.`price`
          FROM       products    
          LEFT JOIN  product_category
          ON         products.product_category_id = product_category.id
          WHERE      products.id = 3";

if ($stmt = $mysqli->prepare($query)) {     
    $stmt->execute();
    $stmt->bind_result($product_name, $price);
    $row = array();
    while ($stmt->fetch()) {
        $row = array('product_name'=>$product_name, 'price'=>$price);
    }   
    $stmt->close();
}
return $row;

多重記錄:

$query = "SELECT     products.`product_name`, product_category.`price`
          FROM       products    
          LEFT JOIN  product_category
          ON         products.product_category_id = product_category.id
          WHERE      products.id = 3";

if ($stmt = $mysqli->prepare($query)) {     
    $stmt->execute();
    $stmt->bind_result($product_name, $price);
    $rows = array();
    while ($stmt->fetch()) {
        $rows[] = array('product_name'=>$product_name, 'price'=>$price);
    }   
    $stmt->close();
}
return $rows;

PDO中的示例:

$query = "SELECT     products.`product_name`, product_category.`price`
          FROM       products    
          LEFT JOIN  product_category
          ON         products.product_category_id = product_category.id
          WHERE      products.id = 3";

if ($stmt = $pdo->prepare($query)) {     
    $stmt->execute();
    $rows = $stmt->fetchAll();
}
return $rows;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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