繁体   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