Как получить массив с fetch_array с php - PullRequest
1 голос
/ 12 марта 2012

У меня есть простая проблема с этим fetch_array.Мне нравится считывать x1 и x2 из таблицы A. оба массива мне нужны для счетчика, который установит другое поле в другой таблице 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 ]

2 голосов
/ 12 марта 2012

Ваша цитата неверна в $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 голос
/ 12 марта 2012

$counter = "UPDATE tablename(B) SET xy=xy + 1 WHERE x1='".$row["x1"]."' AND x2 ='".$row["x2"]."'";

1 голос
/ 12 марта 2012

Ваш 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, если она не удалась.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...