php中的现有记录

时间:2014-01-21 15:39:07

标签: php postgresql

每当我在UI中添加新的地点/描述时,它都会自动保存到我的数据库中。我的问题是,我仍然可以添加一个已经存在的地方。我想要的是,如果它已经存在,它将不会保存/更新新的描述/地点。

非常感谢任何建议。 感谢。

这是我的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 个答案:

答案 0 :(得分:2)

有两种方式:

  1. 您可以更改表格,使列唯一

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

  2. 使用选择

    检查您的描述/位置是否已存在
    $query = "select description from country.regions";
    $result=$this->conn->fetchAll($query);
    if(count($result)>0){
        print 'already exist'  
    } else {
        //insert code
    }
    

答案 1 :(得分:1)

请检查重复条目的$description是否真的相同。

您可以为必须唯一的列引入UNIQUE约束到SQL模式 - 它将在下层引入安全性。

请检查说明是否属于bytea类型。如果是,则应使用pg_escape_bytea代替pg_escape_string