我知道有几个关于为什么INSERT INTO
不起作用的主题,但我找不到任何解决方案。
所以问题是我想在我的表中插入新记录。 代码是:
$query = "INSERT INTO cms_galleryrsrc(_filename) VALUES ('$filename')";
mysqli_query($db, $query);
MySQL表看起来像:
cms_galleryrsrc[_id (int, AUTOINCREMENT); _filename (varchar(255))]
它只是没有做任何事......
注意:例如UPDATE
,SELECT * FROM
工作正常。
请帮帮我:)
答案 0 :(得分:5)
虽然在这种情况下你有一个技术上不需要的限制,但你的代码可以减少到;
// Backtick is optional most of the time, it's personal preference for me.
$query = "INSERT INTO cms_galleryrsrc (`_filename`) VALUES ('$filename')";
mysqli_query($db, $query);
这留下了一个最后的问题;你确认$ filename有值吗?
如果filename
不允许空值,MySQL可能拒绝查询,但$ filename为空,则为空。
echo 'FN: ' . $filename;
exit;
在查询上方,然后运行并检查输出。
编辑:在OP的回复之后,我检查了MySQL的文档,_filename
是一个保留字。
答案 1 :(得分:1)
在缺少表名空间之后,试试这个应该可以工作,&你不需要限制条款
$query = "INSERT INTO cms_galleryrsrc (_filename) VALUES ('$filename')";
答案 2 :(得分:0)
您的查询中有一个limit 1
子句会导致MySQL抛出错误。
虽然可以在插入语句上设置限制条款,但您已经赢得的格式无效 - 您必须限制查询。
以下显示了一个包含代码的简单插入内容:
mysql> select * from test1;
+------+-------+
| id | varry |
+------+-------+
| 1 | aaa |
| 1 | NULL |
+------+-------+
2 rows in set (0.03 sec)
mysql> insert into test1 values (2, 'ab') limit 1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'limit
1' at line 1
mysql> insert into test1 values (2, 'ab');
Query OK, 1 row affected (0.07 sec)
mysql> insert into test1 values(2, 'ab');
Query OK, 1 row affected (0.00 sec)