Php 公共函数,在向表中添加数据之前检查两列中是否存在重复项
我的表格中有三列,如下所示:Php 公共函数,在向表中添加数据之前检查两列中是否存在重复项,php,sql,function,opencart,Php,Sql,Function,Opencart,我的表格中有三列,如下所示: product_id sku model 我试图编写一个函数,每当我向列model添加一个新值时,它都会检查以确保该值在model和sku中是唯一的,并提供唯一的产品id。 我现在有一个函数,在让model列添加值之前检查现有的model。但是,当model列添加新值时,我还需要它检查sku,以确保新值当前既不存在于model列中,也不存在于sku列中 public function checkmodel($model, $product_id=0) { if
product_id
sku
model
我试图编写一个函数,每当我向列model
添加一个新值时,它都会检查以确保该值在model
和sku
中是唯一的,并提供唯一的产品id
。
我现在有一个函数,在让model
列添加值之前检查现有的model
。但是,当model
列添加新值时,我还需要它检查sku
,以确保新值当前既不存在于model
列中,也不存在于sku
列中
public function checkmodel($model, $product_id=0) {
if (!$model) {return false; }
$sql = "SELECT * FROM `".DB_PREFIX."product` WHERE model='".$this->db->escape($model)."' AND sku='" AND product_id<>'".(int)$product_id."'";
$query = $this->db->query($sql);
return $query->rows;
公共函数检查模型($model,$product\u id=0){
如果(!$model){返回false;}
$sql=“SELECT*FROM`..DB\u PREFIX.”product`WHERE model='“$this->DB->escape($model)。“'AND sku='”和product\u id'”(int)$product\u id.“;
$query=$this->db->query($sql);
返回$query->rows;
我必须删除$model
和$sku
值的转义,以便于阅读;将它们放回原处
public function checkmodel($model, $product_id=0) {
if (!$model) {return false; }
$sql = "SELECT COUNT(*) AS total FROM `".DB_PREFIX."product` WHERE
(model='". $model."' OR sku='" . $model . "')
AND product_id != '".(int)$product_id."'";
$query = $this->db->query($sql);
if ($query->row['total'] != 0) return false;
}
谢谢@Scott,现在的问题是无论输入是什么,它都会给出错误的返回,即使输入正确也不会传递到真实的返回OK。然后请查询数据库(使用PHPMyAdmin或直接查询)使用您正在测试的型号/产品id对,如下所示:
从oc_product WHERE(model='your-model'或sku='your model')中选择*和product_id!=您的产品id
。让我们看看有什么。当我放入print语句(在最后一个if语句中用print替换return)时,它会打印“true”“如果输入不与任何型号的sku重复,并且如果输入在任何型号或sku中重复,则打印“falsetrue”。我删除了最后一条返回语句,它开始工作得很好,我编辑了您的答案,感谢您的时间和帮助