INSERT IGNORE работает внутри транзакции - PullRequest
0 голосов
/ 27 мая 2019

Я в замешательстве.У меня есть задание cron, написанное на PHP, для вставки значений в таблицу.Но некоторые значения могут уже существовать в таблице.Но мы не уверены, кто они.Поэтому я использовал метод INSERT IGNORE INTO для вставки своих записей следующим образом:

$insertSql = "INSERT IGNORE INTO `my_procuts` (`product_id`, `category_id`) VALUES " . $valueString . ";";
$insertResult = mysqli_query($conn, $insertSql);
$affectedRows = mysqli_affected_rows($conn);

Где $ valueString - результат предыдущего цикла for.И это те ценности, которые нужно вставить.Этот запрос работает нормально.Значения вставляются, как я ожидал.Теперь я хочу добавить транзакцию к этой вставке.Поэтому я пытаюсь это так,

mysqli_begin_transaction($conn, MYSQLI_TRANS_START_READ_ONLY);
$insertSql = "INSERT IGNORE INTO `my_procuts` (`product_id`, `category_id`) VALUES " . $valueString . ";";
$insertResult = mysqli_query($conn, $insertSql);
$affectedRows = mysqli_affected_rows($conn);
mysqli_commit($conn);

Теперь запрос не работает.$ disabledRows всегда дает -1 результат.В чем может быть проблема, которую я сделал.Заранее спасибо.:)

...