首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内爆修复update sql

内爆修复update sql
EN

Stack Overflow用户
提问于 2012-07-01 09:22:53
回答 3查看 1.1K关注 0票数 0

我有这个功能

代码语言:javascript
复制
function updateDbRecord($db, $table, $carry, $carryUrl) {   
    mysql_select_db($db) or die("Could not select database. " . mysql_error());
    $resultInsert = mysql_query("SHOW COLUMNS FROM " . $table . " WHERE Field NOT IN ('id')");
    $fieldnames=array();
      if (mysql_num_rows($resultInsert) > 0) {
        while ($row = mysql_fetch_array($resultInsert)) {
            $fieldnames[] = $row['Field'];
            $arr = array_intersect_key( $_POST, array_flip($fieldnames) ); #check if value is null otherwise do not INSERT
        }
      }

      $set = "";
      foreach($arr as $key => $v) {
        $val = is_numeric($v) ? $v : "'" . $v . "'";

        $set .= $key . '=' . $val . ', ';
      }
      $sql = sprintf("UPDATE %s SET %s WHERE id='%s'", $table, $set, $_POST['id']);
      mysql_query($sql);
      if ($carry == 'yes') {
        redirect($carryUrl.'?id='.$_REQUEST['id']);
      } else { echo "Done!"; }
      echo $sql;

}

例如,它输出: UPDATE projects SET project_name='123',project_bold='123',project_content='123',WHERE id='12‘

where前面的最后一个逗号阻止了它的工作。有没有办法避免这种情况?我知道函数内爆,但是我不确定如何在这种情况下使用它。

EN

回答 3

Stack Overflow用户

发布于 2012-07-01 09:25:08

是,

代码语言:javascript
复制
$sql = substr($sql,'',-1);
票数 0
EN

Stack Overflow用户

发布于 2012-07-01 09:26:26

我会用

代码语言:javascript
复制
$sql = rtrim($sql, ',');

或者不是附加到字符串,而是附加到数组并使用implode

票数 0
EN

Stack Overflow用户

发布于 2012-07-01 09:46:37

代码语言:javascript
复制
function updateDbRecord($db, $table, $carry, $carryUrl) {   
    mysql_select_db($db) or die("Could not select database. " . mysql_error());
    $resultInsert = mysql_query("SHOW COLUMNS FROM " . $table . " WHERE Field NOT IN ('id')");
    $fieldnames=array();
      if (mysql_num_rows($resultInsert) > 0) {
        while ($row = mysql_fetch_array($resultInsert)) {
            $fieldnames[] = $row['Field'];
            $array = array_intersect_key( $_POST, array_flip($fieldnames) ); #check if value is null otherwise do not INSERT
        }
      }
      foreach ($array as $key => $value) {

                $value = mysql_real_escape_string($value); // this is dedicated to @Jon
                $value = "'$value'";
                $updates[] = "$key = $value";
            }
      $implodeArray = implode(', ', $updates);
      $sql = sprintf("UPDATE %s SET %s WHERE id='%s'", $table, $implodeArray, $_POST['id']);
      mysql_query($sql);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11278924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档