我使用两个表的INNER JOIN创建了一个MySQL视图。它将第一个表中的ID号与第二个表中的相同ID进行匹配,以便访问更多数据。
CREATE OR REPLACE VIEW vy_enheterILager
AS
(
SELECT enheter.enhID, enheter.produktID, batcher.inDatum, enheter.utDatum
FROM enheter
INNER JOIN batcher ON enheter.batchID = batcher.batchID
WHERE enheter.utDatum IS NULL
)
我想更新utDatum列,其中包含视图前两行的特定日期,由inDatum列排序。
这适用于phpMyAdmin:
UPDATE vy_enheterILager
SET utDatum = '2018-05-06'
WHERE produktID = 3
ORDER BY inDatum
LIMIT 2
但是,当尝试使用预准备语句从PHP执行此操作时,它不起作用。
$sql = "UPDATE vy_enheterILager SET utDatum = ? WHERE produktID = ? ORDER BY inDatum LIMIT ?";
if($stmt = $mysqli->prepare($sql)){
// Bind variables to the prepared statement as parameters
$stmt->bind_param("sii", $param_utLevDatum, $param_utLevProdukt, $param_utLevAntal);
// Set parameters
$param_utLevDatum = $utLevDatum;
$param_utLevProdukt = $utLevProdukt;
$param_utLevAntal = $utLevAntal;
// Attempt to execute the prepared statement
if($stmt->execute()){
// Records created successfully
header("location: lager.php");
exit();
} else{
printf("Error: %s.\n", $stmt->error);
}
}
我收到以下错误:
UPDATE和ORDER BY的使用不正确。
为什么它在phpMyAdmin中工作而不是在我的PHP脚本中?提前谢谢。
编辑:我相信这是一个新问题。我已经看到UPDATE的文档提到了这个:“对于多表语法,UPDATE更新每个表中的行 在满足条件的table_references中命名。在这种情况下, ORDER BY和LIMIT不能使用。“
然而,如果我不想支持我的工作,那么它是如何从phpMyAdmin而不是从PHP工作的呢?它根本不应该工作吗?它是同一台服务器!