php - 在数据库中查找、获取和替换部分字符串的最快方法

标签 php mysql database

我在数据库表中有一组记录,其中一列有字符串值。类似于 HeyHelloWorld1HeyGoodDayWorld2HeyHowdyWorld32。我需要将它们全部更改为 GoodEveningWorld(以及字符串末尾的任何内容)。我正在尝试运行脚本,但它花费的时间太长,我想知道是否有人知道实现此脚本的最快方法

脚本:

$con=mysqli_connect("localhost","user","password","db");
// Check connection
if (mysqli_connect_errno())
 {
   echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }
 $str_to_look_for = 'Hey';
 $new_str = 'GoodEvening';
 $result = mysqli_query($con,"SELECT * FROM table1 WHERE item LIKE '%$str%'");
 if(!$result) echo "No records found?";
  else
    {
  echo " Found ".mysqli_num_rows($result)." rows<br/>... Executing script...";
      while($row = mysqli_fetch_array($result))
         {
          $val = strstr($row['item'], '/World');
          $new_val = $new_str.$val;
          $id = $row['ID'];
          insert($new_val, $id, $con);
        }
        echo " DONE!";
    }


  function insert($x, $id, $con)
      {
    $result = mysqli_query($con,"UPDATE table1 SET item = '$x' WHERE ID = '$id'");
    if (!$result) echo "missed..<br/>";
      }

最佳答案

查看 MySQL String functions并考虑直接在数据库中替换它。

UPDATE table1 
SET item = 
  CONCAT(
    'GoodEvening',
    SUBSTRING( item, INSTR( item, 'World') ) 
  )

这适用于 World 之后的任何内容,而不仅仅是 HelloWorld 或 HayWorld。

关于php - 在数据库中查找、获取和替换部分字符串的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832433/

相关文章:

php - 从数据库获取文件名并将其从服务器中删除

php - 变量内的 Smarty 模板变量

php - 如何使用 php 分解 mysql 数据库中已经存在的 json 数据?

php - MySQL 返回不等于 PHP 数组中的值的行

mysql - 为辅助表生成的主键在 @OneToMany 关系上为空

php - 使用 jQuery 序列化将 ajax 值放入数据库选择查询

java - 如何在刷新之前获取 Hibernate Managed Entity 的数据库快照

javascript - 使用自动完成功能时从数据库传递隐藏值

php - Laravel 9.x 目标类在登录应用程序时不存在错误

php - 如何从 PHP 脚本暂停/重启 Linux Ubuntu?