[英]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;
}
在上面的代碼中,我從數據庫中獲得一個數據/行。
問題是您正在函數中執行和獲取,但返回了該語句。 您可以進行兩種可能的更改。
在函數中執行並獲取,然后循環遍歷結果並返回表示結果的數組。
從函數返回語句,並在使用函數結果的位置執行執行和提取。
我認為您已經獲得了足夠的幫助,如果您仍然不確定如何編寫代碼,請執行以下操作:
單條記錄
$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.