2012-12-29 275 views
1

用户发送sql查询,有时(通常是服务器繁忙)sql行重复。我想阻止它。示例如果用户同时发送相同的查询,sql只接受一个查询。我不想删除它总是..我可以做到这一点在phpmyadmin?SQL防止重复输入

如果我不能,问题在这个PHP: http://www.speedyshare.com/S4QRj/Automation.php

我想在这个代码:

private function returnunitsComplete() { 
    global $database; 
    $time = time(); 
    $q = "SELECT * FROM ".TB_PREFIX."movement, ".TB_PREFIX."attacks where ".TB_PREFIX."movement.ref = ".TB_PREFIX."attacks.id and ".TB_PREFIX."movement.proc = '0' and ".TB_PREFIX."movement.sort_type = '4' and endtime < $time"; 
    $dataarray = $database->query_return($q); 


    foreach($dataarray as $data) { 

    $tribe = $database->getUserField($database->getVillageField($data['to'],"owner"),"tribe",0); 

    if($tribe == 1){ $u = ""; } elseif($tribe == 2){ $u = "1"; } elseif($tribe == 3){ $u = "2"; } elseif($tribe == 4){ $u = "3"; } else{ $u = "4"; } 
    $database->modifyUnit(
      $data['to'], 
      array($u."1",$u."2",$u."3",$u."4",$u."5",$u."6",$u."7",$u."8",$u."9",$tribe."0","hero"), 
      array($data['t1'],$data['t2'],$data['t3'],$data['t4'],$data['t5'],$data['t6'],$data['t7'],$data['t8'],$data['t9'],$data['t10'],$data['t11']), 
      array(1,1,1,1,1,1,1,1,1,1,1) 
    ); 
    $database->setMovementProc($data['moveid']); 
    } 

有时返回复制单位和报告。对不起,我的英语不好。谢谢...

+1

你看过'UNIQUE'列索引吗? – deceze

+0

当你说查询意味着要插入数据库的数据库或数据的问题? – HMarioD

回答

2

在您的表格中使用CONSTRAINT,如PRIMARY KEY和/或UNIQUE KEY。他们不会接受相同的价值。

CREATE TABLE Persons 
(
P_Id int NOT NULL, 
LastName varchar(255) NOT NULL, 
PRIMARY KEY (P_Id) //primary key 
) 

如需更多信息,请参阅here

+0

你能解释一下吗?我能怎么做? –

+0

你需要在你的表结构中定义它。 – Ravi

+0

@ user1936293查看我更新的帖子 – Ravi

2

如果你想确保对列col1和表tbl1不包含重复的值对的col2的(但每列自己可以),您可以创建必要的唯一索引

ALTER TABLE tbl1 
    ADD UNIQUE KEY(col1, col2) 

文档(MySQL):http://dev.mysql.com/doc/refman/5.1/en/alter-table.html

+0

语法是'ALTER TABLE ... ** ADD ** UNIQUE KEY ...' –

+0

@ypercube fixed,thanks –