0

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

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

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

5 回答 5

1

您正在告诉数据库将第二个表中的 PersonID 插入到您的第一个表中,其中第二个表中的 PersonID 为 1。

那相当于说Insert 1 into first table table

$result2 = mysql_query ("INSERT INTO topics (personID) VALUES (1)");  // equivalent to your query.
于 2013-10-31T08:48:04.250 回答
0

在自动增量表中调用插入后,只需执行此操作

$id = mysql_insert_id ();
$result2 = mysql_query ("INSERT INTO 'topics' (personId) VALUES ('$id')");

就这样

于 2013-10-31T08:50:28.617 回答
0

在您的查询中,您始终选择带有personID = 1. 它存在吗?如果您在事务中插入人员,请确保事务已提交。

于 2013-10-31T08:51:53.893 回答
0

您需要指定 table.columnName。

$result2 = mysql_query ("
INSERT INTO topics (topics.personID) 
    SELECT personID 
    FROM persons 
    WHERE persons.personID = 1
"); 
于 2013-10-31T08:51:56.363 回答
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>
于 2013-10-31T08:47:46.273 回答