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

在mySQL数据库中使用PHP更新表中的每一行,php,mysql,sql,Php,Mysql,Sql,假设这是表的结构。我想更新此表的每一行 假设我想用下划线替换文件名中的每个空格 Table *------------------------------------------------* | id | title | filename | *------------------------------------------------* 这是行不通的。每一行都有不同的文件名。如果您先使用mysql\u connect()连接到数据库

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

假设我想用下划线替换文件名中的每个空格

  Table
*------------------------------------------------*
|    id    |    title   |    filename            |
*------------------------------------------------*

这是行不通的。每一行都有不同的文件名。

如果您先使用mysql\u connect()连接到数据库,这将起作用

如果您只是一次性地这样做,那么您的解决方案就可以了——但是如果您允许用户通过某种形式这样做,那么您就有一个称为SQL注入的安全缺陷。如果变量$filename是由用户提交的,则用户可以结束查询并启动新的查询。决不能将未初始化的数据放入MySQL查询中


为了解决这个问题,请将$filename放入mysql\u real\u escape\u字符串,或者更好地使用MySQLi或PDO提供的预处理语句。

我只需执行以下操作:

$new_filename = str_replace(" ", "_", $filename);

mysql_query("UPDATE table SET Filename = '$new_filename'");
这样,您只需执行一个命令,并且根据表的大小,这应该非常快


*编辑后的第一个答案更好:)

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

像这样:

mysql_query("UPDATE table SET Filename = REPLACE(Filename, ' ', '_')");
$query=“从表中选择id、文件名”;
$result=mysql\u query($query);
如果($结果){
$num=mysql\u numrows($result);
$i=0;
而($i<$num){
$new\u filename=str\u replace(“\u”,”,mysql\u result($result,$i,“filename”);
$id=mysql_result($result,$i,“id”);
mysql_查询(“更新表集文件名='$new_文件名',其中id='$id');
}
}

因此,每一行都有不同的文件名,并且在每一行中,您想用下划线替换这些文件名中的空格吗?如果您尝试,会发生什么情况?Brian,由于文件名未设置,因此表中所有行的文件名在命令后都为空谢谢!如果我想搜索某个内容并替换文件名与搜索匹配的任何行,该怎么办?您只需添加一个where子句,例如:
where Filename
='Some file'`。阅读更多:这也是一个很好的方式,但我更感兴趣的是一个一般性的答案。比方说,如果变化不是那么简单呢。例如,数据库条目有一个简短的HTML片段,其中包含视频的嵌入代码和一些其他内容。我想将嵌入代码改为HTML5,并将那些NUBMER改为f(原始编号)。我想这需要通过php进行查询,然后更新其中的行。这比选择的答案帮助更多,因为我需要的更新在SQL中非常困难。
    $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'");
        }
    }