2014-05-07 46 views
-1

我有一个字符串,并最终输出删除最后一个逗号是:PHP从字符串

UPDATE in-the-press SET title='Test 2',date='2014-05-06',description='Blah, Blah, Blah',image='admin-uploads/test.jpg',WHERE id = 1 

这是通过这里生成:

$sql = "UPDATE " . $array['tableName'] . " SET "; 

       foreach($array as $row => $value){ 
         if($row == 'id' || $row == 'tableName' || $row == 'submit'){ 
           continue; 
         } 
         $sql .= $row . "='" . $value . "',"; 
       } 
       $sql .= "WHERE id = " . $array['id']; 

我怎么会去之前删除最后一个逗号在哪里或者我想用计数器在最后的项目中说每个没有逗号。

回答

1

我总是这样做。只是条件创建数组,然后爆它如下:

$sql = "UPDATE " . $array['tableName'] . " SET "; 
      $set = array(); 
      foreach($array as $row => $value){ 

        if($row == 'id' || $row == 'tableName' || $row == 'submit'){ 
          continue; 
        } 
        $set[] = $row . "='" . $value."'"; 
      } 
      $sql .= implode(',' $set); 
      $sql .= "WHERE id = " . $array['id']; 

当然,你应该考虑使用例如使用PDO进行查询,或者至少你应该使用像mysql_real_escape_string功能/ mysqli_real_escape_strin

+1

您正在重置循环内的数组。 – ccKep

+0

谢谢,反应太快。我已经修复了它 –

3
$terms = array() 
foreach($array as $row => $value){ 
    $terms[] = "$row = '$value'"; 
} 
$term_str = implode(',', $terms); 
预处理语句

希望你已经在其他地方占了SQL injection attacks,并且$array的值是“安全的”...