【问题标题】:Insert if not exist php如果不存在则插入 php
【发布时间】:2011-10-24 15:51:17
【问题描述】:

我有密码

mysql_query("INSERT INTO authors (author) VALUES ('$rec_fic_author') WHERE NOT EXISTS (SELECT * FROM authors WHERE author='$rec_fic_author')") or die("cannot insert author");

其中 authors 是包含 authorID (pk) 的表,以及 author $rec_fic_author 是一个 _POST 变量

我正在尝试这样做,以便当一个人添加作者时,代码会检查数据库中是否有同名的人(在作者列下)。如果没有,则添加条目 我的作者是 TEXT,由于某种原因,我无法使其在 phpMyAdmin 中独一无二。 我查看了 REPLACE 和 INSERT .. ON DUPLICATE KEY UPDATE,但据我所知,他们都需要有问题的值是唯一/PK 值。这不是这里的情况。

帮助?

【问题讨论】:

  • 能不能把你的表结构和PK等信息分享一下
  • 你为什么不为作者做一个 SELECT 并检查 mysql_num_rows()?如果它等于 0 则插入。
  • author as TEXT 似乎有点过大,应该使用 CHAR/VARCHAR;这些可以有一个唯一的索引。

标签: php mysql insert


【解决方案1】:

我建议您使用 PK 或 UK(如 wonk0 建议的那样)操作,然后您可以使用带有 INGNORE 子句的 INSERT 语句。

INSERT Syntax

【讨论】:

    【解决方案2】:

    这是一个很好的查询,如果您有良好的索引,NOT EXISTS 通常会很快。但我想知道为什么这不起作用!

    我认为这对您的关注很有用...LINK,检查一下。

    【讨论】:

    • 不幸的是,这不是 INSERT 的有效语法; cfdev.mysql.com/doc/refman/5.1/en/insert.html
    • @wonk0,我并不是说这是一个有效的链接,但我建议一个已经发布的链接,如果可能的话,那很好......(请投票给我的答案) .
    猜你喜欢
    • 2018-09-17
    • 2021-02-04
    • 2014-06-11
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2015-03-31
    相关资源
    最近更新 更多