0

如果帖子值为空白,我希望将 UPDATE NULL 更新到我的数据库中。如果它不是空白,我希望它插入发布的值。

if(empty($post['gallery']))$post['gallery'] = NULL;

这是一个相当大的查询,所以这是我感兴趣的一点:

"article.article_gallery_id = '".$post['gallery']."', ".

上面从不插入 NULL 而是插入 0。

这确实插入了一个 NULL:

"article.article_gallery_id = NULL, ".

我相信问题在于 $post['gallery'] 周围的单引号。如果我删除它们,查询根本不起作用。

我怎样才能解决这个问题?

我不想使用 PDO,也不担心安全性——我已经为示例做了一些说明。

4

5 回答 5

1

将其放入字符串时,PHPnull不会转换为 SQL 。 如果值为空,则查询需要看起来像. 如果它不为空,则查询需要看起来像. 比较使用引号和不使用引号以及关键字。您需要以这种方式显式格式化查询,您不能依赖 PHP值。NULL
article.article_gallery_id = NULL
article.article_gallery_id = 'value'
NULLnull

于 2013-06-06T16:22:35.153 回答
0

您不需要在 SQL 中为 null 加上引号:

if(empty($post['gallery'])){ $post['gallery'] = "NULL"; } 
$sql = "UPDATE article SET article.article_gallery_id = " . $post['gallery'] . " WHERE somefield = 'someValue'";

您应该避免使用 MySQL 功能,因为它已贬值。尝试MySQLiPDO

于 2013-06-06T16:23:15.310 回答
0

是的,删除引号,因为您处理的是整数,而不是字符串。

那为什么会失败呢?尝试这个:

echo "column = " . null;

它与“column =”相呼应,因为null它说的是:什么都没有。$post['gallery']当为空时,您需要考虑特殊情况。

 $sqlQuery .=
     "article.article_gallery_id = "
     . (is_null($post['gallery']) ? 'NULL' : $post['gallery'])
     . " [rest of your query here] ";
于 2013-06-06T16:27:02.707 回答
0

要插入null数据库,您必须删除它周围的引号。我注意到你说你试过了,但没有用。我想当时发生的事情是您发生了不同的错误。您说查询很长,所以错误可能发生在其他地方?这里有一个简单的方法来解决它:

$post['gallery'] = (!empty($post['gallery'])) "'$post[gallery]'" : 'NULL';

"article.article_gallery_id = $post[gallery], ".

如果您注意到我从查询中删除了单引号,并且如果它不为空,我将它们添加到 post var 中。

我希望这会有所帮助!

于 2013-06-06T16:27:34.517 回答
-1

您应该将表默认设置为 null,但要实际解决此问题,您必须切换引号,pHP 评估 " 之间的任何 var 而不是现在它设置一个空值而不是字面上的 null。

最好的解决方案是这样

if(empty($post['gallery']))$post['gallery'] = "NULL";

然后它实际上放入了mysql需要的NULL值

于 2013-06-06T16:20:51.973 回答