具有相同命名列的2个表不起作用

时间:2013-10-31 08:44:24

标签: php mysql

我有两个表,两个都有一个名为personID的字段,在一个表中它自动递增,我想将它写入另一个表。它发生在同一页面上。我生成人员ID,然后尝试使用选择和写入另一个,但它不起作用。请帮帮我。

不起作用的PHP代码如下所示:

$result2 = mysql_query ("
    INSERT INTO 'topics' ('personID') 
        SELECT personID 
        FROM persons 
        WHERE personID = 1
"); 

5 个答案:

答案 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
");