У меня действительно странная проблема. Я понятия не имею, почему это не работает. я создаю пользователя, получаю идентификатор и вставляю строку на основе этого идентификатора в другую таблицу. строка вставляется с этим идентификатором, но другие значения для этой строки не вставляются!
$user_id = mysqli_insert_id($this->connection);
$query = "INSERT INTO selections
(user_id, language_id, country_id, region_id, city_id, gender_id, age_id, category_id)
VALUES ($user_id, 1, 1, 0, 0, 0, 20, 0)";
, поэтому вставляется user_id, но не другие значения (все они равны 0 в таблице). Я действительно проверил столбцы и удалил все внешние ключи для устранения этой проблемы. но я понятия не имею.
все столбцы INT. странная часть - когда я заменяю $ user_id на буквальное число, это работает, иногда нет. но строка всегда создается. и я проверил, что $ user_id является целым числом.
Я знаю, что это сложная проблема, и она может быть вызвана многими вещами, но я пытался решить эту крошечную проблему в течение 3 часов. было бы здорово, если бы кто-то дал мне что-то, что я мог бы сделать для устранения этой проблемы.
ОБНОВЛЕНИЕ: даже если я установил значения по умолчанию и просто вставил первый столбец (user_id), он не работает. любое другое поле равно 0. Так странно!
| selections | CREATE TABLE `selections` (
`user_id` int(11) NOT NULL,
`language_id` int(11) NOT NULL DEFAULT '1',
`country_id` int(11) NOT NULL DEFAULT '1',
`region_id` int(11) NOT NULL DEFAULT '0',
`city_id` int(11) NOT NULL DEFAULT '0',
`gender_id` int(11) NOT NULL DEFAULT '0',
`age_id` int(11) NOT NULL DEFAULT '0',
`category_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
$query = "INSERT INTO selections
(user_id)
VALUES ('$user_id')";
user_id показывает 178, а другие поля равны 0: (
UPDATE:
Это работало в командной строке sql. но не в php. но mysqli не выдал ошибку, и строка действительно была вставлена, но почему другие поля 0?
ОТВЕТ: Моя вина. у меня был скрипт jquery, который изменил его обратно на 0 0 0 0 0 0 0. На моей странице много AJAX, поэтому было сложно найти его ... извините, мой плохой!