我有两个表,两个都有一个名为personID
的字段,在一个表中它自动递增,我想将它写入另一个表。它发生在同一页面上。我生成人员ID,然后尝试使用选择和写入另一个,但它不起作用。请帮帮我。
不起作用的PHP代码如下所示:
$result2 = mysql_query ("
INSERT INTO 'topics' ('personID')
SELECT personID
FROM persons
WHERE personID = 1
");
答案 0 :(得分:1)
您告诉数据库将第二个表中的PersonID插入第一个表中,其中第二个表中的PersonID为1。
这相当于说Insert 1 into first table table
。
$result2 = mysql_query ("INSERT INTO topics (personID) VALUES (1)"); // equivalent to your query.
答案 1 :(得分:0)
查询没有任何问题,除非您使用单引号:
INSERT INTO topics (personID)
SELECT personID FROM persons where personID = 1
如果你在MySQL中使用保留字,你应该使用反引号`(通常在键盘上的1旁边)来包含名称。
参见以下示例:
mysql> select * from test1;
+------+-------+
| id | varry |
+------+-------+
| 1 | aaa |
+------+-------+
1 row in set (0.07 sec)
mysql> select * from test2;
+------+-------+-------+
| id | barry | third |
+------+-------+-------+
| 1 | ccc | NULL |
| NULL | d | 1 |
| NULL | d | 2 |
| NULL | d | 3 |
+------+-------+-------+
4 rows in set (0.00 sec)
mysql> insert into test1 (id) select id from test2 where barry='ccc';
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> insert into test1 ('id') select 'id' from test2 where barry='ccc';
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 ''id')
select 'id' from test2 where barry='ccc'' at line 1
mysql>
答案 2 :(得分:0)
在自动增量表中调用插入后,只需执行此操作
$id = mysql_insert_id ();
$result2 = mysql_query ("INSERT INTO 'topics' (personId) VALUES ('$id')");
这就是全部
答案 3 :(得分:0)
在您的查询中,您始终选择personID = 1
人。它存在吗?
如果在事务中插入person,请确保提交事务。
答案 4 :(得分:0)
您需要指定table.column名称。
$result2 = mysql_query ("
INSERT INTO topics (topics.personID)
SELECT personID
FROM persons
WHERE persons.personID = 1
");