来自SO的朋友们!
此代码曾经有效,但在克隆数据库时似乎停止工作。有一个名为maps的表,它有一些默认值,比如maximum。据我所知,如果我的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的记录。 / p>
此刻,它显得空白。当然,这会导致问题。
有什么想法吗?
谢谢! 克里斯;
表:
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 ordenesdesexraciónyanálisisparaundominioespecífico。' COLLATE = 'latin1_swedish_ci' ENGINE = InnoDB的;
答案 0 :(得分:1)
也许: http://www.noelherrick.com/blog/mysql-quirk-not-null-defaults
它表示使用扩展插入(在insert语句中指定多行),可以绕过此默认值;提供警告而不是错误。然而,单个插入语句会产生错误。
目前可以通过
来避免Set sql_mode = "strict_all_tables";
然后使用default关键字,该关键字将插入该列的默认值。
答案 1 :(得分:0)
正如评论中所建议的那样,您传递的是空白而不是NULL。试试这个:
if (isset($_GET['scan_maximo_exploracion']) && $_GET['scan_maximo_exploracion']) {
$scan->maximo_exploracion = addslashes($_GET['scan_maximo_exploracion']);
}