Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 公共函数,在向表中添加数据之前检查两列中是否存在重复项_Php_Sql_Function_Opencart - Fatal编程技术网

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”。我删除了最后一条返回语句,它开始工作得很好,我编辑了您的答案,感谢您的时间和帮助