gpt4 book ai didi

php - 将空值传递给 mysql 数据库

转载 作者:可可西里 更新时间:2023-11-01 07:11:46 26 4
gpt4 key购买 nike

用户填写表单,如果他们选择不填写不需要的字段,php 会这样做:

      if($_SESSION['numofchildren']=="")
$_SESSION['numofchildren']=null;

但是当我在 mysql 查询中使用 session 变量时,结果不是 null,而是 0。该列是允许 NULL 的 tinyint(4)。

为什么我得到的是 0 而不是 NULL?

最佳答案

可能是因为 PHP 不会将“null”转换为“NULL”。您可能只是插入一个空值。

INSERT INTO TABLE (`Field`) ('')

您可能将列的默认设置设置为“0”,这意味着它将插入一个 0,除非您指定一个数字或 NULL

INSERT INTO TABLE ('Field') (NULL)

要解决此问题,请在执行查询之前检查空值。

foreach($values as $key => $value)
{
if($value == null)
{
$values[$key] = "NULL";
}
}

我有一种感觉,准备好的语句将具有先见之明,可以自动执行此操作。但是,如果您正在执行内联语句,则需要添加更多内容。

MySQL 值必须用引号括起来,但 Null 值不需要。因此,您将需要使用此引用其他所有内容

foreach($values as $key => $value)
{
if($value == null)
{
$values[$key] = "NULL";
}
else
{
// Real Escape for Good Measure
$values[$key] = "'" . mysql_real_escape_string($value) . "'";
}
}

然后,当您创建语句时,请确保不要在任何值周围加上引号

$SQL = "INSERT INTO TABLE (Field) VALUES(".$values['field'].")";

变成

$SQL = "INSERT INTO TABLE (Field) VALUES("Test Value")";

$SQL = "INSERT INTO TABLE (Field) VALUES(NULL)";

关于php - 将空值传递给 mysql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com