大家好我正在尝试使用PDO方法通过PHP更新我的数据库,我的脚本连接到我的数据库并根据设置的clientID选择所需的所有数据,然后计算出今天的日期和创建日期之间的差异
然后继续根据年龄(1到6之间的数字)为每个结果分配权重
我需要做的是使用新权重更新clientID相同的数据库中的所有记录。
这是我出错的地方所有工作的精细化直到这一点!我的UPDATE语句只更新最后一个(最高)ID(如果有多个记录返回同一个clientID)
$hostdb = '';
$namedb = '';
$userdb = '';
$passdb = '';
try{
$conn = new PDO("mysql:host=$hostdb; dbname=$namedb", $userdb, $passdb);
$conn->exec("SET CHARACTER SET utf8"); // Sets encoding UTF-8
$sql = "UPDATE parked SET weight = :weight
WHERE ID = :ID";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':ID', $ID, PDO::PARAM_INT);
$stmt->bindParam(':weight', $weight, PDO::PARAM_INT);
$stmt->execute();
$conn = null; // Disconnect
}
catch(PDOException $e) {
echo $e->getMessage();
}
?>
由于我之前从未更新过多条记录,并且通常是由$ _POST而不是在脚本本身内部,我真的很挣扎。
DB IMAGE
需要注意的事项: 我没有收到错误的消息!
答案 0 :(得分:1)
您的更新查询仅更新一条记录,因为您只传递一条记录,即前一个select语句中的最后一条记录。要传递多个记录,您需要创建一个$weight[]
数组,计算select语句的每一行,将值推送到数组中,然后通过更新查询迭代循环每个项目。
然而,您在PHP中所做的一切都可以在MySQL Update SQL查询中完成,因为MySQL带有DateDiff()和Now()函数,以及嵌套的逻辑CASE/WHEN
语句(实际上,甚至是{{ 1}})。因此,您只需连接一次即可运行操作查询:
IF/THEN