首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用PHP在mySQL数据库中更新表中的每一行

问用PHP在mySQL数据库中更新表中的每一行
EN

Stack Overflow用户
提问于 2012-03-03 23:50:37
回答 3查看 3K关注 0票数 3
代码语言:javascript
复制
  Table
*------------------------------------------------*
|    id    |    title   |    filename            |
*------------------------------------------------*

假设这是表的结构。我想要更新这个表的每一行。

假设我想用下划线替换Filename中的每个空格。

代码语言:javascript
复制
$new_filename = str_replace(" ", "_", $filename);

mysql_query("UPDATE table SET Filename = '$new_filename'");

这不起作用。每一行都有不同的文件名。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-03 23:55:49

我会简单地这样做:

代码语言:javascript
复制
mysql_query("UPDATE table SET Filename = REPLACE(Filename, ' ', '_')");

通过这种方式,您只需执行一条命令,并且根据表的大小,这应该会非常快

*编辑

票数 12
EN

Stack Overflow用户

发布于 2012-03-03 23:58:50

第一个答案是更好的:)

所以你的文件名在每一行都是一样的?否则,此代码将用一个名称替换所有文件名。您将需要一个for循环,从表中获取数据并更新它。

如下所示:

代码语言:javascript
复制
    $query = "SELECT id, filename FROM table";
    $result = mysql_query($query); 
    if($result){
        $num = mysql_numrows($result);
        $i=0;
        while ($i < $num) {
            $new_filename = str_replace("_", " ", mysql_result($result,$i,"filename"));
            $id = mysql_result($result,$i,"id");
        mysql_query("UPDATE table SET filename = '$new_filename' WHERE id='$id'");
        }
    }
票数 3
EN

Stack Overflow用户

发布于 2012-03-03 23:55:09

如果您首先使用mysql_connect()连接到数据库,那么这将是可行的。

如果你只是一次性地这样做,你的解决方案是好的-但是如果你允许用户通过某种形式这样做,那么你就有一个称为SQL注入的安全缺陷。如果变量$filename是由用户提交的,那么他们可以结束查询并开始一个新的查询。永远不要将未清理的数据放入MySQL查询中。

要解决这个问题,可以将$filename放到mysql_real_escape_string中,或者更好地使用MySQLi或PDO提供的预准备语句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9547407

复制
相关文章

相似问题

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