每当我在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));
}
}
答案 0 :(得分:2)
有两种方式:
您可以更改表格,使列唯一
ALTER IGNORE TABLE country.regions ADD UNIQUE(description);
使用选择
检查您的描述/位置是否已存在$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
。