我对fetch_array有一个简单的问题。我想从表A中读出x1和x2。我需要一个计数器的两个数组,它将另一个表B上的另一个字段设置为+1。我写了下面的代码,但它不起作用,我不知道哪里是错误。也许有人可以帮助我。非常感谢。
$get_counter = "SELECT x1, x2 FROM tablename(A) WHERE id='$id'";
$result2 = mysqli_query($db, $get_counter);
$row = $result2->fetch_array(MYSQLI_ASSOC);
$counter = "UPDATE tablename(B) SET xy=xy + 1 WHERE x1=$row["x1"] AND x2=$row["x2"]";
$result3 = mysqli_query($db, $counter);
答案 0 :(得分:2)
$counter
中您的报价错误。在双引号字符串中围绕{}
中的数组或对象是一种很好的做法(有时是必需的)。
$counter = "UPDATE tablename(B) SET xy = (xy + 1) WHERE x1={$row['x1']} AND x2={$row['x2']}";
但是,如果您不打算在第二个查询中使用x1, x2
,则可以使用一个查询和JOIN
执行此操作。这消除了对第一次查询和获取调用的需要。
UPDTE
tablenameb B JOIN tablenamea A ON B.x1 = A.x1 AND B.x2 = A.x2
SET xy = (xy + 1)
WHERE A.id='$id'
答案 1 :(得分:1)
您的SQL包含错误,您的脚本不会检查SQL错误。
此:
$row = $result2->fetch_array(MYSQLI_ASSOC);
应该是:
if ($result2 === false) {
printf("Invalid query: %s\nWhole query: %s\n", mysqli_error(), $get_counter);
exit();
}
$row = $result2->fetch_array(MYSQLI_ASSOC);
了解如何在此处检查$ result2,以及如果失败则如何打印SQL错误。
答案 2 :(得分:1)
$counter = "UPDATE tablename(B) SET xy=xy + 1 WHERE x1='".$row["x1"]."' AND x2 ='".$row["x2"]."'";