绑定参数和绑定结果没有return项-PHPMySql

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

以下函数将字符串类型的参数 'device' 用作参数,并使用它来查询我的库存 table 以查看该设备的库存(每个设备都存在 UNIQUE 约束)。它应该 return 一个整数但是保持 returning 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;
}

P.S。我也尝试过最初定义 $stock 但函数只是 returns 初始赋值而不是绑定的结果项。

在我看来这可行(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;
}

我用的是这种方式prepare,你可以直接把结果存入一个新的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;
}