gpt4 book ai didi

php - 要解决 PDO NULL 问题,请在 PHPMyAdmin 中将字段更改为 NULL 或检查代码中是否为 NULL,如果是,则设置为空字符串?

转载 作者:行者123 更新时间:2023-11-29 10:41:00 26 4
gpt4 key购买 nike

我的 PHP 网站有一个使用 PDO 将数据插入 mysql 的表单。例如,表单上的字段之一是“电子邮件”。

这不是必需的。因此,在提交时,我在插入之前设置了电子邮件变量:

$email=$_POST['email'];

然后我使用 PDO 准备好的语句插入。之前使用mysqli插入时,插入空白没有问题。但现在有了 PDO,如果他们将其留空,则会导致:

Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'email' cannot be null in...

我研究了一下,似乎 PDO 不允许插入 NULL 值,除非 MySQL 被告知它可以接收它们。所以看来我有两个选择......

1.  In MySQL (via PHPMyAdmin), check the "Null" checkbox for that column under "Structure"
2. In the code, add a small snippet like this:

if (empty($email)) {
$email=""; //set it equal to blank, which allows it to get inserted into the database without needing to mark the field as NULL in MySQL
}

我想知道选项 #1 或选项 #2 的优点/缺点是什么?有时我可能有很多表单选项可以留空,因此在这方面,#2 可能需要做更多的工作,为所有选项添加 if (empty()) 代码段。

那么#1 是最好的选择吗?

或者我还缺少其他选择吗?

最佳答案

您收到的错误来自数据库,而不是 PDO,PDO 只是访问数据库的一种方式。

回到您的问题,明显的答案是,如果您的应用程序中有可选字段,则应该将其列设置为可为空。

如果您选择其他选项,即:

if (empty($email)) {
$email="";
}

我不会说这很糟糕,但想象一下,在某些时候您需要向应用程序添加更多字段,并且其中大多数字段都是可选的,您是否要为每个字段进行可空性测试?

如果我是你,我就不会这样做。

关于php - 要解决 PDO NULL 问题,请在 PHPMyAdmin 中将字段更改为 NULL 或检查代码中是否为 NULL,如果是,则设置为空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45490481/

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