php - 绑定(bind)参数和绑定(bind)结果不返回item - PHP MySql

标签 php mysql binding statements

以下函数采用字符串类型的参数“设备”,并使用它来查询我的库存表以查看该设备的库存(每个设备都存在唯一约束)。它应该返回一个整数,但始终返回 NULL。我的 IDE 还强调 $stock 变量在 bind_result 中未定义,但我已经完美地遵循了在线示例。我哪里出错了?

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;
}

附注我也尝试过最初定义 $stock,但该函数只是返回初始赋值而不是绑定(bind)的结果项。

最佳答案

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

关于php - 绑定(bind)参数和绑定(bind)结果不返回item - PHP MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29029903/

相关文章:

php - 有没有办法在 PHP 中追溯创建基于时间/节点的 UUID?

php - 如何使用 Facebook 应用访问 token ?

mysql - 如何启用 MYSQL 用户访问除一个数据库之外的所有数据库

python - 使用 Tkinter 绑定(bind)传递额外参数

拉拉维尔 9 : How to extend UrlGenerator core class

c# - 以枚举为键绑定(bind)到字典中的值

php - 使用 json_encode 数据而不是创建新表是不是糟糕的设计?

javascript - 使用更多的外部文件,而不是将所有内容都塞进一个文件,会降低运行时效率吗?

python - Flask-sqlalchemy - 计算请求 REST 端点(或数据库记录)的次数

支持远程和本地访问的 Mysql