SQL Not null 和 php = 或 false

Posted

技术标签:

【中文标题】SQL Not null 和 php = 或 false【英文标题】:SQL Not null and php = or false 【发布时间】:2013-01-03 15:22:48 【问题描述】:

我有一个将描述和缩略图插入表格的循环,但并非循环中的所有项目都有描述和缩略图。我不认为这是一个问题,但是 sql 不会插入它,除非它们有值。我认为这可能是由于 not null 的原因,所以我尝试将“null”更改为“yes”。

我设置它打印出执行的查询和mysql错误:

查询:INSERT INTO Experiments (title, dir, desc, thumbnail) VALUES('3dbox', '3dbox', '', '')

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'desc, thumbnail) VALUES('3dbox', '3dbox', '', '')' 附近使用正确的语法

我也试过这个:

$d = @file_get_contents("/experiments/$sites[$i]/desc.txt") or false;

但这也不起作用,正如您在查询中看到的那样。

【问题讨论】:

字段是否设置为NOT NULL? DESC是mysql中的保留字,你应该改成别的 不,i.imgur.com/nzXbf.png 他们是空的 【参考方案1】:

desc是Mysql中的保留字。因此,错误。您需要将列名更改为其他名称,或者使用这样的反引号访问它,

INSERT INTO experiments (title, dir, `desc`, thumbnail) VALUES('3dbox', '3dbox', '', '')

这是保留字的manual。

【讨论】:

它告诉我必须等待选择答案 :)【参考方案2】:

desc在mysql中保留,必须标识为:

INSERT INTO experiments (title, dir, `desc`, thumbnail) VALUES('3dbox', '3dbox', '', '')

【讨论】:

【参考方案3】:

您不能使用“desc”作为列名,因为它是一个保留字:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html,您需要对其进行转义:尝试将您的查询更改为:

INSERT INTO experiments (title, dir, `desc`, thumbnail) VALUES('3dbox', '3dbox', '', '');

【讨论】:

以上是关于SQL Not null 和 php = 或 false的主要内容,如果未能解决你的问题,请参考以下文章

sql 使用NULL和NOT NULL

如何在sql中同时测试null和not null?

我如何在 php 中从 mysql 查询结果组按日期给出符号(如更改颜色或 fa-up/fa-down)

SQL中 IS NULL 和IS NOT NULL

MySQL - IS NOT NULL 和 != NULL 的区别?

PHP面向对象之标识对象