Привет друзья от SO!
Этот код работал, но похоже, что он перестает работать, когда я клонировал базу данных. Существует таблица, называемая картами, которая имеет некоторые значения по умолчанию, такие как максимум. Насколько я понимаю, если мой код INSERT не имеет значения, тогда будет использоваться значение dafault.
Это то, что я делаю:
Эти значения могут быть там, поскольку их, возможно, нет.
$scan->maximo_exploracion = addslashes($_GET['scan_maximo_exploracion']); $scan->proceso_analisis = addslashes($_GET['scan_proceso_analisis']); $scan->email_user = addslashes($_GET['scan_email_user']); $scan->email_owner = addslashes($_GET['scan_email_owner']);
Затем:
db_ask($db_resonance_slave, " INSERT INTO mapas SET usuario_id = '$user->id', maximo_exploracion = '$scan->maximo_exploracion', proceso_analisis = '$scan->proceso_analisis', email_user = '$scan->email_user', email_owner = '$scan->email_owner', max_proc = '5', proceso_exploracion = 'esperando', direccion = '$scan->address', dominio = '$scan->dominio', dominio_id = '$dominio->id', server_address = '$scan->server_address', server_zone = '$scan->zone_name', server_zone_code = '$scan->zone_code', server_response_speed = '$scan->server_response_speed' ");
Теперь, несколько дней назад, с тем же кодом, если в $ scan-> maximo_exploracion не было никакой информации, запись будет вставлена со значением по умолчанию 100.
В настоящий момент он выглядит пустым. Это, конечно, вызывает проблемы.
Есть идеи?
Благодаря! Крис;
Стол:
CREATE TABLE `mapas` ( `id` INT(12) NOT NULL AUTO_INCREMENT, `usuario_id` VARCHAR(256) NOT NULL, `maximo_exploracion` VARCHAR(256) NOT NULL DEFAULT '100', `max_proc` VARCHAR(256) NOT NULL, `open_proc` VARCHAR(256) NOT NULL, `hora_lanzado` VARCHAR(256) NOT NULL, `direccion` VARCHAR(256) NOT NULL, `dominio` VARCHAR(256) NOT NULL, `dominio_id` VARCHAR(256) NOT NULL, `idioma` VARCHAR(256) NOT NULL, `server_address` VARCHAR(256) NOT NULL, `server_zone` VARCHAR(256) NOT NULL, `server_zone_code` VARCHAR(256) NOT NULL, `server_response_speed` VARCHAR(256) NOT NULL, `proceso_exploracion` VARCHAR(256) NOT NULL DEFAULT 'esperando', `proceso_analisis` VARCHAR(256) NOT NULL DEFAULT 'esperando', `email_owner` VARCHAR(256) NOT NULL DEFAULT 'False', `email_user` VARCHAR(256) NOT NULL DEFAULT 'True', `eliminado` INT(12) NOT NULL DEFAULT '0', `creacion` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) )
КОММЕНТАРИЙ = 'Almacena mapas, los mapas son ordenes de exploración y análisis para un dominio específico.' COLLATE = 'latin1_swedish_ci' ENGINE = InnoDB;
Возможно: http://www.noelherrick.com/blog/mysql-quirk-not-null-defaults
Он указывает использование расширенной вставки (где вы указываете несколько строк в инструкции insert), что вы можете обойти это значение по умолчанию; вместо ошибок возникает предупреждение. Однако отдельные инструкции вставки вызывают ошибку.
Этого можно избежать в
Set sql_mode = "strict_all_tables";
Затем используйте ключевое слово по умолчанию, которое будет вставлять значение по умолчанию этого столбца.
Как указано в комментариях, вы передаете пустой, а не NULL. Попробуй это:
if (isset($_GET['scan_maximo_exploracion']) && $_GET['scan_maximo_exploracion']) { $scan->maximo_exploracion = addslashes($_GET['scan_maximo_exploracion']); }