2014-01-21 42 views
0

每当我添加一个新的地方/描述在我的用户界面,它会自动保存到我的数据库。我的问题是,我仍然可以添加地点事件,尽管它已经存在。我想要的是,如果它已经存在,它不会保存/更新新的描述/地点。现有的记录在php

任何意见将不胜感激。 谢谢。

这是我的我的EditPlaces:

public function executeEditPlaces(sfWebRequest $request) 
{ 
try{ 
$id = pg_escape_string(strip_tags($request->getParameter("id"))); 

// $id = $request->getParameter("id"); 
$query = "select description from country.regions where id = ('$id')"; 
    // die($query); 


    $result=$this->conn->fetchAll($query); 

    if(count($result)>0){ 

    $v = $result[0]; 
    $data['data'] = array('description' => $this->formatString($v['description'])); 
    } 


    $data['success']=true; 
    $data['msg']=$msg; 
    die(json_encode($data)); 

    } 
    catch(exception $e) 
    {  
    $data['success']=false; 
    $data['msg']=$e->getMessage(); 
    die(json_encode($data)); 
    } 
} 

这是我UpdatePlaces:

public function executeUpdatePlaces(sfWebRequest $request) 
{ 
try{ 
$by = $_SESSION['employee_id']; 
$now = date("Y-m-d H:I:s"); 

$id = $request->getParameter("id"); 
$description = pg_escape_string(strip_tags($request->getParameter("description"))); 

$description = trim($description); 

if(strlen($description) == 0) 
{ 
    die('cannot be empty'); 
} 
else 
    { 

$query = "update country.regions set description=('$description'),modified_by=('$by'),date_modified=('$now') where id=('$id')"; 

    $msg = "Existing Region Successfully Updated."; 


    $this->conn->execute($query); 
    $data['success']=true; 
    $data['msg']=$msg; 
    die(json_encode($data)); 
    } 
    } 
    catch(exception $e) 
    {  
    $data['success']=false; 
    $data['msg']=$e->getMessage(); 
    die(json_encode($data)); 
    }  

} 
+2

使用“唯一”约束更改您的数据库架构。 –

+1

是的,只需将描述/位置定义为唯一索引即可。 – davidkonrad

+0

@davidkonrad我必须在哪里定义唯一索引? – sack

回答

2

有两路:

  1. 你可以改变你的表,以便该列独特

    ALTER IGNORE TABLE country.regions ADD UNIQUE(description);

  2. 检查你的描述/地方已经存在使用select

    $query = "select description from country.regions"; 
    $result=$this->conn->fetchAll($query); 
    if(count($result)>0){ 
        print 'already exist' 
    } else { 
        //insert code 
    } 
    
1

请检查是否重复条目$description实际上是一样的。

对于必须唯一的列,您可能会引入UNIQUE约束到SQL模式 - 它会在下层引入安全性。

请检查描述的类型是bytea。如果是,应使用pg_escape_bytea而不是pg_escape_string