MySQL中的PHP;在比较之前编辑列值

时间:2017-02-09 21:49:33

标签: php mysql sql function pdo

我的PHP代码中有一个MySQL查询,如下所示:

$statement = $pdo->prepare('SELECT name FROM persons WHERE name = :name');
$statement->execute(array(':name' => "Peter-Loew"));

我想要的是在与:name进行比较之前修改"Peter-Loew"

我希望在与:name进行比较之前在"Peter-Loew"上运行这样的PHP代码:

<?php
function url_replace($url_replace) {
$url_replace = str_ireplace(array('Ä','Ö','Ü'), array('Ae','Oe','Ue'), $url_replace);
$url_replace = preg_replace('~[^a-zA-Z0-9]+~', '-', $url_replace);
$url_replace = trim($url_replace, '-');
$url_replace = rtrim($url_replace, '-');
return $url_replace;
}
?>

我该怎么做?或者,是否有人知道如何称呼我正在寻找的东西?任何提示?

2 个答案:

答案 0 :(得分:0)

您必须先独立清理数据库。因此,当您执行INSERTUPDATE时,您将在url_replace字段上运行name。然后,当您在问题中运行支票时,您可以对您要检查的值运行url_replace

换句话说,你需要使表中的数据统一进行,以便统一出来。

答案 1 :(得分:0)

可以做你想做的事情,但强烈不推荐,否则你会遇到严重的性能问题。

最好的方法是在将名称保存到数据库之前清理名称。

如果你真的需要这样做,那么你应该多次使用REPLACE函数链接,然后使用TRIM函数......

示例查询:

SELECT name FROM persons WHERE TRIM(REPLACE(name, 'Ä', 'Ae')) = :name;