在 MySql 更新语句中使用函数

Use a Function in MySql update statement

我正在尝试在 cron.php 文件中使用此 mysql 语句从一个数据库更新另一个数据库。

我需要删除一列中的所有特殊字符以将其保存在我的第一个数据库中。我已经定义了一个功能,它负责删除所有这些功能,但是当我尝试在我的列数据中 运行 它时,它无法按预期工作。

我正在使用以下代码:

//função para retirada de acentos
function tirarAcentos($string){
   $acentos  =  'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ ';
   $sem_acentos  =  'aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr-';
   $string = strtr($string, utf8_decode($acentos), $sem_acentos);
   //$string = str_replace(" ","-",$string);
   return utf8_decode($string);
}

// Executa o UPDATE de Cidades
 $sql = "UPDATE imo_imo2019.categoria categoria
        INNER JOIN imo_nido.i_cidade i_cidade
        ON categoria.categoria_id = i_cidade.codcidade
        SET categoria.categoria_title = i_cidade.descricao, categoria.categoria_url = tirarAcentos(i_cidade.descricao)";  

代码运行良好。它正在按预期更新数据,但没有删除字符。

如果你们中的一些人能帮助我解决这个问题,我将非常高兴。

谢谢

数据库服务器中的 SQL 查询 运行 不在 PHP 中。您使用 PHP 生成表示查询的文本,然后要求数据库 运行 它。在您的情况下,您有两个选择:

  1. 两个单独的查询,第一个 SELECT 查询以获取现有数据,然后对 每个 具有格式化值的行进行新的更新查询。
  2. 编写一个 stored procedure(数据库服务器中的函数)来满足您的需要。

有两种解决方案:

  • 将您的函数转换为数据库中的存储过程。
  • 从数据库中获取数据到 PHP,应用您的函数,并使用更改后的值更新数据库。