如何用php获取带fetch_array的数组

时间:2012-03-12 12:25:44

标签: php arrays mysqli

我对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);

3 个答案:

答案 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"]."'";