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