我知道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
工作正常。请帮帮我:)
虽然在这种情况下有一个技术上不需要的限制,但您的代码可以减少到;
// 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
是一个保留字。
在缺少表名称空间后,尝试一下它应该可以工作,&你不需要限制条款
$query = "INSERT INTO cms_galleryrsrc (_filename) VALUES ('$filename')";
您的查询中有一个limit 1
子句,这将导致MySQL抛出错误。
虽然可以在insert语句中使用limit子句,但您所使用的格式不起作用——您必须限制查询。
下面显示了一个简单的代码插入:
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)