【发布时间】:2022-01-26 07:22:27
【问题描述】:
我需要一些帮助才能使此代码正常工作,以防止重复输入 cname、ccode、crgeno 和 cvatno 的数据库。请帮忙。
//My DB Code
public function insert($cname, $ccode, $cregno, $cvatno)
{
$sql = "INSERT INTO tbl_client (ccode, cname, cregno, cvatno) VALUES (:amcname,:amccode,:amcregno,:amcvatno)";
$stmt = $this->conn->prepare($sql);
$stmt->execute(['amcname' => $cname, 'amccode' => $ccode, 'amcregno' => $cregno, 'amcvatno' => $cvatno]);
return true;
}
//My action Code
if(isset($_POST['action']) && $_POST['action'] == "insert"){
$cname = $_POST['amcname'];
$ccode = $_POST['amccode'];
$cregno = $_POST['amcregno'];
$cvatno = $_POST['amcvatno'];
$db->insert($cname, $ccode, $cregno, $cvatno);
}
@西蒙妮: 也这样做了:
public function insert($cname, $ccode, $cregno, $cvatno)
{
$query = $this->conn->prepare("SELECT cname FROM tbl_client WHERE cname = ?");
$query->bind_param('s',$cname);
$query->execute();
$result = $query->get_result();
$count = $result->num_rows;
if($count===0){
$sql = "INSERT INTO tbl_client (ccode, cname, cregno, cvatno) VALUES (:amcname,:amccode,:amcregno,:amcvatno)";
$stmt = $this->conn->prepare($sql);
$stmt->execute(['amcname' => $cname, 'amccode' => $ccode, 'amcregno' => $cregno, 'amcvatno' => $cvatno]);
return true;
};
}
:(还是有问题...
【问题讨论】:
-
选项是两个,如果数据库中的字段是唯一的,您可以使用
INSERT IGNORE直接查询,或者您可以在插入之前使用简单的if($result->num_rows === 0) {do you query insert}查询SELECT -
@Simone Rossaini 谢谢你会试试的
-
“仍有问题”是什么意思?您添加的代码用于 mysqli,并且您在问题中使用 PDO,因此您需要更改新代码以使用 PDO,因为您不能在 PDO 连接上使用 mysqli 函数。
-
@droopsnoot: 拍摄记录,将尝试