2016-05-15 40 views
1

嗨,大家好蚁的问题是我的更新功能,它需要一些参数和eveluates他们,如果他们是过程中的值之后,整数或字符串,并抛出了查询语句...SQL和PHP - 是否有与此查询或代码在这里

public function update ($table, $cols, $values, $addition) { 
    $db = $this->connect(); 
    $i = 0; 
    $update = ''; 
    if ((is_array($cols)) && (is_array($values))) { 
     foreach ($cols as $a) { 
      if (!is_int($values[$i])) { 
       $update = $a.'="'.$values[$i].'",'; 
      } else { 
       $update = $a.'='.$values[$i].','; 
      } 
      $i++; 
     } 
     $update = substr($update, 0, -1); 
    } else { 
     if (!is_int($values)) { 
      $update = $cols.'="'.$values.'",'; 
     } else { 
      $update = $cols.'='.$values.','; 
     } 
    } 
    echo "update ".$table." set ".$update." ".$addition."<br>"; 
    try { 
     $sql = $db->prepare("update ".$table." set ".$update." ".$addition); 
     $sql->execute(); 
    } catch (PDOException $e) { 
     print $e->getMessage(); 
    } 
    $db = null; 
} 

和这里的参数和SQL查询

$this->db->update("brands", "car_count", $brandCarCount[0]+1, "where brand = '".$brand."'"); 

update brands set car_count=2, where brand = 'alfa_romeo' 

我真不明白发生了什么,我无法找到问题。它适用于其他插入选择或删除功能。

我需要帮助!

+1

你有多余的逗号有 – Reto

+0

ffffffffffffffffffffffffffffffffffffffffff @Reto我会离开这个地方 – mjdcsy

+0

没有问题(其中前一个),有时我们不能一叶障目,因为的树;) – Reto

回答

1

即相关行其去除尾随逗号:

$更新= RTRIM($更新, '');

,这是全码:

public function update ($table, $cols, $values, $addition) { 
    $db = $this->connect(); 
    $i = 0; 
    $update = ''; 
    if ((is_array($cols)) && (is_array($values))) { 
     foreach ($cols as $a) { 
      if (!is_int($values[$i])) { 
       $update = $a.'="'.$values[$i].'",'; 
      } else { 
       $update = $a.'='.$values[$i].','; 
      } 
      $i++; 
     } 
    } else { 
     if (!is_int($values)) { 
      $update = $cols.'="'.$values.'",'; 
     } else { 
      $update = $cols.'='.$values.','; 
     } 
    } 
    $update = rtrim($update,','); 
    echo "update ".$table." set ".$update." ".$addition."<br>"; 
    try { 
     $sql = $db->prepare("update ".$table." set ".$update." ".$addition); 
     $sql->execute(); 
    } catch (PDOException $e) { 
     print $e->getMessage(); 
    } 
    $db = null; 
}