如果输入字段留空,则尝试 INSERT NULL

发布于 2024-12-09 04:05:33 字数 646 浏览 0 评论 0原文

我正在尝试使用 PHP 将 NULL 插入到 mySQL 数据库中。

我得到:

$myVariable=$_POST[inputfield];        
if(!is_numeric($myVariable) || $myVariable==0){

$myVariable=NULL;
} 

我的数据库字段是十进制的,并且已设置 IS NULL。如果输入留空,它会不断恢复为 0.00。如果留空,如何设置 NULL,以便我可以调用 php if NULL 函数?

编辑 如果十进制的 NULL 调用不正确?

<? if ($debit==NULL || $debit=="0.00") {echo 'Awaiting Cost';} 
elseif ($debit != NULL || $debit!="0.00") { echo "£$debit";}?>

这会正确显示我的消息,因此如果 NULL 对于小数没有用,我将保留 0.00。这是哈克吗?

对于那些提出问题的人来说,SQL 结构如下:

 `myTableField` decimal(10,2) default NULL,

I'm trying to insert NULL into the mySQL databse with PHP.

I've got:

$myVariable=$_POST[inputfield];        
if(!is_numeric($myVariable) || $myVariable==0){

$myVariable=NULL;
} 

My database field is decimal, and IS NULL has been set. It keeps reverting to 0.00 if input is left blank. How do I set NULL if left blank, so I can call a php if NULL function?

Edit Calling if NULL in decimal is not correct?

<? if ($debit==NULL || $debit=="0.00") {echo 'Awaiting Cost';} 
elseif ($debit != NULL || $debit!="0.00") { echo "£$debit";}?>

This displays my message correctly, so if if NULL is useless for a decimal i'll just leave 0.00. Is this hacky?

SQL structure for those who asked:

 `myTableField` decimal(10,2) default NULL,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

你没皮卡萌 2024-12-16 04:05:33

如果您通过附加 $myVariable 变量的值来编写 SQL 语句,那么您应该查看它是否为 NULL 并相应地修改 SQL 语句。

例如,如果您的代码类似于:

$sql .= "myVariable = '" . mysql_real_escape_string($myVariable) . "'";

那么您应该将其更改为:

if (is_null($myVariable)) {
    $sql .= "myVariable = NULL";
} else {
    $sql .= "myVariable = '" . mysql_real_escape_string($myVariable) . "'";
}

If you are composing an SQL statement by appending the value of the $myVariable variable, then you should look if it's NULL or not and modify the SQL statement accordingly.

For example, if your code is something like:

$sql .= "myVariable = '" . mysql_real_escape_string($myVariable) . "'";

then you should change it to something like:

if (is_null($myVariable)) {
    $sql .= "myVariable = NULL";
} else {
    $sql .= "myVariable = '" . mysql_real_escape_string($myVariable) . "'";
}
痴者 2024-12-16 04:05:33

在 SQL 端尝试一下:

$sql = "INSERT INTO `table` (`field1`) VALUES (IF($myVariable == 0, NULL, $myVariable))";

Try it on the SQL side:

$sql = "INSERT INTO `table` (`field1`) VALUES (IF($myVariable == 0, NULL, $myVariable))";
泡沫很甜 2024-12-16 04:05:33

尝试:

$myVariable="NULL";

.
如果你的代码是:

$val=NULL;
mysql_query("SET @v=$val");

MySQL 得到了字符串:

SET @v=0;

就像使用:

echo "SET @v=$val";

try:

$myVariable="NULL";

.
if your code is:

$val=NULL;
mysql_query("SET @v=$val");

the MySQL got the string:

SET @v=0;

it's like using :

echo "SET @v=$val";
熟人话多 2024-12-16 04:05:33

您可以使用触发器过滤 MySQL 本身中的字段数据:

CREATE TRIGGER table1_update BEFORE UPDATE ON table1 FOR EACH ROW SET
    NEW.num=IF(NEW.num=0 ,NULL,NEW.num),
    NEW.txt=IF(NEW.txt="",NULL,NEW.txt);
CREATE TRIGGER table1_create BEFORE INSERT ON table1 FOR EACH ROW SET
    NEW.num=IF(NEW.num=0 ,NULL,NEW.num),
    NEW.txt=IF(NEW.txt="",NULL,NEW.txt);

you can filter field's data in MySQL itself, using a TRIGGER:

CREATE TRIGGER table1_update BEFORE UPDATE ON table1 FOR EACH ROW SET
    NEW.num=IF(NEW.num=0 ,NULL,NEW.num),
    NEW.txt=IF(NEW.txt="",NULL,NEW.txt);
CREATE TRIGGER table1_create BEFORE INSERT ON table1 FOR EACH ROW SET
    NEW.num=IF(NEW.num=0 ,NULL,NEW.num),
    NEW.txt=IF(NEW.txt="",NULL,NEW.txt);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文