绑定参数和绑定结果没有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;
}
以下函数将字符串类型的参数 '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;
}