Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL默认值未按预期工作_Php_Mysql_Insert_Default Value - Fatal编程技术网

Php MySQL默认值未按预期工作

Php MySQL默认值未按预期工作,php,mysql,insert,default-value,Php,Mysql,Insert,Default Value,你好,来自SO的朋友们 这段代码以前是有效的,但当我克隆数据库时,它似乎停止了工作。有一个名为maps的表,它有一些默认值,比如max。据我所知,如果我的INSERT代码没有值,那么将使用dafault值 这就是我正在做的: 这些值可能存在,也可能不存在。 $scan->maximo_exploracion = addslashes($_GET['scan_maximo_exploracion']); $scan->proceso_analisis = addslashes($_

你好,来自SO的朋友们

这段代码以前是有效的,但当我克隆数据库时,它似乎停止了工作。有一个名为maps的表,它有一些默认值,比如max。据我所知,如果我的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'
");
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`)
)
现在,几天前,使用相同的代码,如果$scan->maximo_exploracion没有任何信息,记录将以默认值100插入

此时此刻,它显得空白。当然,这也造成了问题

有什么想法吗

谢谢! 克里斯


表格:

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'
");
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 aálisis)是多米尼克特别行政区的一员。’ 校对='latin1\u swedish\u ci'
引擎=InnoDB

正如注释中所建议的,您传递的是空白而不是NULL。试试这个:

if (isset($_GET['scan_maximo_exploracion']) && $_GET['scan_maximo_exploracion']) {
    $scan->maximo_exploracion   = addslashes($_GET['scan_maximo_exploracion']);
}
也许:

它表示使用扩展insert(在insert语句中指定多行)可以绕过此默认值;将提供警告,而不是错误。但是单insert语句会抛出一个错误

目前可以通过以下方法避免这种情况:

Set sql_mode = "strict_all_tables"; 

然后使用默认关键字,它将插入该列的默认值。

如果您所更改的都是DB端的,为什么不发布有关DB端的所有信息呢?fancyPants先生/小姐,这绝对合乎逻辑,我刚才就是这么做的。这是从克隆的数据库还是从原始数据库来的?只是想确定一下……因为我没想到会这样,我把原来的那个拿走了。这来自克隆数据库。这是一个网络爬虫的片段,因为它变得太大了,我划分了数据库,创建了一个主/从方案。但是,现在正在执行此行为…我怀疑您的脚本正在将maximo_exploracion设置为空而不是空。由于blank不为null,因此它不会插入默认值。感谢您的帮助,奥利,我不确定,但由于$\u GET['scan\u maximo\u exploracion']根本没有赋值,因此表示法$scan->maximo\u exploracion应该为null,而不是空的。我想保持PHP的原样,因为我知道它的功能。。。或者,过去是这样。然而,像您这样的方法可能是——如果($scan->maximo_exploracion==''){unset($scan->maximo_exploracion);}addslashes()将返回一个字符串,而不管$\u GET now.addslashes()的内容是什么。addslashes()已删除-(kids:on development environment environment just for testing proposites)并且它的行为仍然相同,则变量是100%清除的,MySQL的行为也不符合预期。当你从db_ask()中删除“maximo_exploracion='$scan->maximo_exploracion'”时会发生什么?根据第二个问题的帖子。。。这并没有解决问题: