Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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 如何插入值或空值?_Php_Sql_Insert_Null - Fatal编程技术网

Php 如何插入值或空值?

Php 如何插入值或空值?,php,sql,insert,null,Php,Sql,Insert,Null,可能重复: 我有一个带有列的表(日志): 秒:bigint(20)无符号NULL IP地址:varchar(15)NULL 问题在于,每当变量的值为NULL时,它们都会作为IPAddress列的空字符串插入到列中,并作为0插入到Seconds列中,而不是作为NULL插入 我在google上搜索过,但是所有的答案都假设我已经知道变量$sec和$ip是否为NULL。在我的例子中,这取决于POST数据 非常感谢您的帮助。 谢谢 您正在插入” 您正在插入”当您将变量组合到字符串时,变量中的空值将转换为

可能重复:

我有一个带有列的表(日志):

秒:bigint(20)无符号NULL

IP地址:varchar(15)NULL

问题在于,每当变量的值为NULL时,它们都会作为IPAddress列的空字符串插入到列中,并作为0插入到Seconds列中,而不是作为NULL插入

我在google上搜索过,但是所有的答案都假设我已经知道变量$sec和$ip是否为NULL。在我的例子中,这取决于POST数据

非常感谢您的帮助。 谢谢

您正在插入


您正在插入

当您将变量组合到字符串时,变量中的空值将转换为空字符串。您需要构造查询,使其实际读取:

VALUES (NULL, NULL)
而不是

VALUES ("", "")
您可以通过以下方式实现:

if (is_null($seconds)) $seconds='NULL'; else $seconds='"'.$seconds.'"';
if (is_null($ipaddress)) $ipaddress='NULL'; else $ipaddress='"'.$ipaddress.'"';
$query = mysql_query("... VALUES(".$seconds.", ".$ipaddress.")", ...);

但是,从长远来看,使用某种类型的数据库库或PDO和准备好的语句(将这些类型的任务抽象出来)会更好。

在将变量组合成字符串时,变量中的空值会转换成空字符串。您需要构造查询,使其实际读取:

VALUES (NULL, NULL)
而不是

VALUES ("", "")
您可以通过以下方式实现:

if (is_null($seconds)) $seconds='NULL'; else $seconds='"'.$seconds.'"';
if (is_null($ipaddress)) $ipaddress='NULL'; else $ipaddress='"'.$ipaddress.'"';
$query = mysql_query("... VALUES(".$seconds.", ".$ipaddress.")", ...);

但是,从长远来看,使用某种数据库库或PDO和预先准备好的语句来抽象这些类型的任务会更好。

使用占位符。他们将负责
NULL
处理。。并且在不需要手动调用某个外观难看的函数的情况下处理SQL注入。(问题是
'
,一个字符串,而不是
NULL
在insert中被用作值。)因为在获取它们时它们是字符串,因此您将它们视为字符串(mysql\u real\u escape\u string),PHP将字符串定义为NULL,这与mysql NULL不同。在您的查询中,您应该检查(即if语句)以查看变量是否为NULL,如果为NULL,那么它应该如下所示:值(NULL,“$ipaddress.”),不带引号。可能的重复-为过时的
mysql\u
和切换到
mysqli\u
的示例提供了解决方案。(同样)搜索“tag:php insert null”以获得更多结果。。它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果选择PDO,请使用占位符。他们将负责
NULL
处理。。并且在不需要手动调用某个外观难看的函数的情况下处理SQL注入。(问题是
'
,一个字符串,而不是
NULL
在insert中被用作值。)因为在获取它们时它们是字符串,因此您将它们视为字符串(mysql\u real\u escape\u string),PHP将字符串定义为NULL,这与mysql NULL不同。在您的查询中,您应该检查(即if语句)以查看变量是否为NULL,如果为NULL,那么它应该如下所示:值(NULL,“$ipaddress.”),不带引号。可能的重复-为过时的
mysql\u
和切换到
mysqli\u
的示例提供了解决方案。(同样)搜索“tag:php insert null”以获得更多结果。。它们不再得到维护,并且已经开始使用。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO。