обновить весь столбец с вводом массива сверху вниз без указания идентификатора, используя подготовленные операторы

У меня есть 2 таблицы для моих статей в БД:

  1. статьи
  2. теги

tags Структура таблицы и текущее состояние:

первичный ключ для моего tags стол tag колонка.

tag     |   post_ids    |   count   |
-------------------------------------
a       |   2,0         |           |
b       |   1,2,0,0     |           |
tag1    |   1,2,0,0     |           |
j       |   2,0         |           |

Я хочу обновить count колонка после любой вставки (новый пост) или ОБНОВЛЕНИЕ (существующий пост) действие, и я хочу сделать это с подготовленными заявлениями.

В настоящее время я могу динамически построить вход: $array = array("2","4","4","2") что связанные значения count столбец для обновления.

И с кодом ниже; Я пытался обновить count столбец однако всегда обновляется со значением = 2 для всех count строк.

  • У меня нет предупреждения / ошибки.
  • Версия MySQL: 5.5
  • Я должен обновить 1-й count грести $array[0]2-й count грести $array[1] … Так что я должен использовать LIMIT, OFFSET аргументы
  • Я узнал что MySQL не разрешает OFFSET в запросах UPDATE
  • Я не способен писать сложные запросы, я искал SO и нашел Q&A: Смещение LIMIT или OFFSET в SQL-запросе UPDATE
  • Мне показалось, что sql я использовал из этого Q&Логически подходит для моего случая, однако я не понял, sql.
  • Я не уверен на 100%, что проблемной зоной является sql.

Я хочу исправить свой код и узнать, почему он не работает?

Можете ли вы помочь?

С наилучшими пожеланиями

МОЙ КОД

$query = "UPDATE tags SET count = ?
WHERE tag IN(SELECT tag FROM (SELECT tag FROM tags LIMIT ?,1) as u)";

$stmt = $mysqli->prepare($query);
if($stmt === false)
{
trigger_error('SQL Error: ' . $mysqli->error, E_USER_ERROR);
}
$stmt->bind_param("ii", $count, $i);
$i = 0;
foreach ($array as $a) // $array: related values of the `count` column to be updated
{
$count = intval($a);
$stmt->execute();
$i = $i + 1;
}
$stmt->close();

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]