首页 > 解决方案 > 在 MySql 更新语句中使用函数

问题描述

我试图在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)";  

代码工作正常。它按预期更新数据,但不删除字符。

如果你们中的一些人可以帮助我解决它,我真的很高兴。

谢谢

标签: phpmysqljoinmysqlisql-update

解决方案


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

  1. 两个单独的查询,首先是一个 SELECT 查询来获取现有数据,然后是一个新的 UPDATE 查询,每个行都有格式化的值。
  2. 编写一个存储过程(数据库服务器中的一个函数)来满足您的需要。

推荐阅读