MySQL不存储NULL而是空单元格?

时间:2019-02-28 16:28:54

标签: php mysql null sql-insert isset

我对于服务器版本有此问题:10.1.38-MariaDB-1〜bionic-mariadb.org二进制分发。 SQL模式是

  

NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,

PHP 7.1.26-1 + ubuntu18.04.1 + deb.sury.org + 1(cli)(内置:2019年1月11日14:13:49)(NTS)。

代码如下:

$var1 = strtolower($var1);
$var2 = strtolower($var2);
$var3 = strtolower($var3);

if ($var1 && !valid_var($var1)) { $var1 = NULL; }
if ($var2 && !valid_var($var2)) { $var2 = NULL; }
if ($var3 && !valid_var($var3)) { $var3 = NULL; }

function valid_var($credential) {
    $rtn_value = false;
    if (get_magic_quotes_gpc()) { $credential = stripslashes($credential); }
    if (1 <= strlen($credential) && strlen($credential) <= 64 && !preg_match("/[^a-z0-9_-]/i", $credential)) { $rtn_value = true; } return $rtn_value;
}

        $statement = $db->prepare("insert into table (col1, col2, col3) values (?, ?, ?)");
        $data = array((string) $var1, (string) $var2, (string) $var3);
        $statement->execute($data);

然而,MySQL在数据库中存储的是空的''单元,而不是NULL。这些列的表结构为varchar(64)类型,utf8_general_ci排序规则,NULL-是,默认-NULL。现在...假设我向此脚本发出GET请求,但不传递3个变量,而是传递了vars,或者在某些情况下,我具有var1 =&var2 =&var3 =的URL表示未设置。我缺少什么,为什么它不插入NULL但为空?谢谢!

0 个答案:

没有答案