php - PDO如何强制将值更新为int

标签 php mysql pdo

我有以下 pdo 语句:

$stmt = $db->prepare("update product_active set stock=stock-:basketid, sold=sold+:basketid where productid_FK=:pid");

foreach($_SESSION['basket'] as $pid=>$val){
    $stmt->bindParam(":basketid", $_SESSION['basket'][$pid], PDO::PARAM_INT);
    $stmt->bindParam(":pid", $pid, PDO::PARAM_INT);
    $stmt->execute();
}   

这基本上更新了库存,这在本地工作,但在我的服务器上只有库存列正在更新。我有一种感觉,这是因为 sell 可能会以字符串的形式出现。

是否有办法强制这两个更新都是 int?

谢谢

最佳答案

不要尝试在单个 SQL 语句中两次使用相同的命名参数,每个参数必须且只能使用一次。显然,由于可移植性问题,这是预期的行为(根据此错误报告:http://bugs.php.net/bug.php?id=33886)。

绑定(bind)每个参数可能有效:

$stmt = $db->prepare("update product_active set stock=stock-:basketid, sold=sold+:basketid where productid_FK=:pid");

foreach ($_SESSION['basket'] as $pid=>$val)
{
    $basketid = $_SESSION['basket'][$pid];
    $stmt->bindParam(":basketid", $basketid, PDO::PARAM_INT);
    $stmt->bindParam(":basketid", $basketid, PDO::PARAM_INT);
    $stmt->bindParam(":pid", $pid, PDO::PARAM_INT);
    $stmt->execute();
}

如果没有,请添加另一个具有相同值的命名参数。

关于php - PDO如何强制将值更新为int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8521168/

相关文章:

php - 使用服务器端脚本 (PHP) 创建 SVG 图形

mysql - 记录查询在 mysql 中缺少索引

php - 如何使用php从数据库(MySql)显示不重复的随机图像

php - 根据用户输入的第一个字符返回 PDO 查询

php - 如何配置 Twig 来查找模板?

php - 消除数据库查询中的字段索引

PHP sprintf 空间填充

mysql - 选择 mysql 表中第 n 行之后的下 m 行

php - 无法在postgresql pdo中插入和读取数据

php - 非静态方法 PDO::quote() 不能静态调用,