1

我有两个表,cw_users并且ref_users都有一个名为 的列id

我正在使用 ISAM,所以不能使用外键。所以现在我想插入idfrom cw_usersintoref_users如果它不存在。

这就是我所做的,但没有帮助:

$id = $_SESSION['id'];
$ref_code=md5($id);

mysql_query("INSERT INTO ref_users (id) VALUES ('$id') WHERE NOT EXISTS (SELECT FROM cw_users where id='$id')"); 
4

4 回答 4

0

正确的语法是INSERT IGNORE INTO

INSERT IGNORE INTO ref_users (id)
VALUES ('$id')

如果该值不存在,它将插入,如果存在则忽略该语句。

请注意,这仅适用id于主键

编辑:从您的评论看来,您最好使用ON DUPLICATE KEY UPDATE.

试试这个查询

INSERT INTO ref_users(id, ref_code)
VALUES ('$id', '$ref_code')
ON DUPLICATE KEY UPDATE
ref_code = '$ref_code'
于 2013-05-19T06:20:12.600 回答
0

您的查询是

"INSERT INTO ref_users (id) VALUES ('$id') WHERE NOT EXISTS (SELECT FROM cw_users where id='$id')"

不能在插入查询中使用 was case。你可以使用普通的插入。

于 2013-05-19T06:57:25.283 回答
0
...WHERE NOT EXISTS (SELECT id FROM ...
于 2013-05-19T06:40:39.440 回答
0

为什么不运行正常的插入,如果行存在它会失败?

于 2013-05-19T06:48:01.597 回答