【问题标题】:prevent duplicate entries mysql防止重复条目mysql
【发布时间】:2012-11-15 02:31:39
【问题描述】:

大家好,我的脚本有问题

$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'root';
$dbname = 'site';
  $con = mysql_connect($dbhost, $dbuser, $dbpass);
    if (!$con)
    {
    die(mysql_error());
    }
mysql_select_db($dbname, $con);
$sql = "REPLACE INTO stiri (id, titlu, continut, link, categorie, data) VALUES   ('','$titlu','$text','$link','Liga 1','$data')"; 
mysql_query($sql);
mysql_close($con);

这部分在 php foreach 部分中,每次运行脚本时都会出现重复条目​​,如何防止这种情况发生? 我可以使用 UNIQUE 约束,但我希望链接是唯一的,长度超过 125 个字符..

【问题讨论】:

  • 如果你能帮上忙,请不要使用已弃用的 mysql_ 函数。请改用 mysqli 或 PDO。
  • 您不应该将所有这些都放在for 循环中。像这样创建和关闭连接是不必要的。只需创建连接,然后将要运行的语句放入 for 循环中。
  • stackoverflow.com/questions/2219786/… =>我认为这个链接会对你有所帮助.....
  • @PatrickJamesMcDougle thanx,我会改变它。
  • @AnkurSaxena 我看过那篇文章,但我需要链接是唯一的,长度超过 125 个字符,这是个问题吗?服务器运行速度会变慢或者..

标签: php mysql foreach


【解决方案1】:

我猜id 是您表中的主键字段?您正在尝试在其中插入一个空字符串 ('')。如果是 INT 字段,mysql 会将'' 转换为 0。在第一次这样的插入之后,你会遇到重复键的问题。

将id更改为auto_increment字段,并插入null值,例如

REPLACE INTO stiri (id, ...) VALUES (null, ....)

所以mysql可以自动为你生成一个ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多