簡體   English   中英

綁定參數和綁定結果不返回項目-PHP MySql

[英]Binding parameters and binding results does not return item - PHP MySql

以下函數將類型為string的參數“ device”用作參數,並使用它查詢我的庫存表以查看該設備的庫存量(每個設備都存在UNIQUE約束)。 它應該返回一個整數,但是始終返回NULL。 我的IDE也強調在bind_result中未定義的$ stock變量,但是我已經很好地遵循了在線示例。 我要去哪里錯了?

function get_stock_level($device) {
GLOBAL $db;
$sql = 'SELECT in_stock
    FROM stock
    WHERE device = ?';
$stmt = $db->prepare($sql);
$stmt->bind_param('s', $device);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($stock);
return $stock;
}

PS Ive也嘗試過最初定義$ stock,但是該函數僅返回初始賦值而不是綁定的結果項。

我認為這可能有效(PDO不是MySQLi):

function get_stock_level($device) {
GLOBAL $db;
$sql = 'SELECT in_stock
FROM stock
WHERE device = :device';
$stmt = $db->prepare($sql);
$stmt->bindValue(':device', $device,PDO::PARAM_STR);
$stmt->execute();
$stock = $stmt->fetch();
return $stock;
}

我使用這種方式進行准備,您可以將結果直接存儲到新的var中。 如果有多個結果,請使用fetchAll()而不是fetch()。

此外,它不是:

$stmt->bind_param();

它一定要是:

$stmt->bindParam();

MySQLi:

function get_stock_level($device) {
GLOBAL $db;
$sql = 'SELECT in_stock
FROM stock
WHERE device = ?';
$stmt = $db->prepare($sql);
$stmt->bind_param('s', $device);
$stmt->execute();
$stmt->bind_result($stock);//bind result variables
$stmt->fetch();
$stmt->close();//close statement
$db->close();//close connection
return $stock;
}

暫無
暫無

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

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