PHP mysqli — обновление значения поля enum приводит к пустой строке, но тот же запрос работает при запуске в PHPMyAdmin

Запрос:

UPDATE caption_queue SET status = 'Conversion Completed' WHERE tpi_id = '3130'

Как указано в заголовке, когда я запускаю это в PHP, значение устанавливается в пустую строку. Однако, когда точно такой же запрос выполняется непосредственно в MySQL, он работает правильно.

Кроме того, я получаю такое поведение только для одного значения перечисления: «Конверсия завершена». При обновлении другими значениями (большинство из которых также содержат пробелы) проблем не возникает.

Актуальный код PHP для тех, кто заинтересован:

$sql = "UPDATE caption_queue SET status = 'Conversion Completed' WHERE tpi_id = '$tpi_id'";
$val = mysqli_query($link, $sql);
//$link comes from somewhere else, but we use it extensively throughout our website

Определение таблицы:

CREATE TABLE IF NOT EXISTS `caption_queue` (
`tpi_id` int(11) NOT NULL,
`pid` int(6) DEFAULT NULL,
`conversion_began` datetime DEFAULT NULL,
`yt_caption_id` varchar(50) DEFAULT NULL,
`yt_video_id` varchar(50) DEFAULT NULL,
`status` enum('Pending Conversion','Converting','Conversion Completed','Pending Upload','Video Processing','Video Processed','Uploading Transcription','Caption Syncing','Caption Synced','Caption Downloading','Caption Ready') DEFAULT 'Pending Conversion'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

0

Решение

Благодарю.

Я думаю, вы найдете, что это должно работать, если вы поставите столбец с названием status в тики назад.

$query="UPDATE caption_queue SET `status` = 'Conversion Completed' WHERE tpi_id = '3130'";
0

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

Я нашел обходной путь. Используя строгий режим:

SET SESSION sql_mode = 'STRICT_ALL_TABLES'

Я могу обновить поле без проблем. Похоже, какая-то проблема с MySQL.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector