php - 处理mysql中的特殊字符

标签 php mysql

我有 2 个 mysql 表 propertybuilding。在 property 表中,我有一个名为 unitnumber 的字段,该字段中的值类似于 1a2b 等。在 building 表中,我有一个名为 address 的字段,它采用 PHP 的 urlencoded 格式。该值类似于 26+Dovedale+Place%2C+Parnell

现在我想实现一个搜索功能,这样当用户键入 1a, 26 Dovedale 时,我需要从数据库中提取结果。

目前已实现:

    $keyword = preg_replace('/[^a-zA-Z0-9-]/', '', $_REQUEST['keyword']);
    $keyword = str_replace(" ", "-", $keyword);
    $a->rqNotEmpty('keyword', $keyword);

    $query = "SELECT * FROM `buildings` b left join properties p on p.buildingId=b.id 
      WHERE concat(p.floor,p.number,b.address) LIKE '%".$keyword."%'
      or concat(p.number,p.floor,b.address)  LIKE '%".$keyword."'";

但现在的问题是,当我准备 $keyword 变量时,我将得到类似 1a26Dovedale 的内容,并且在 CONCAT 之后的数据库中,该值将类似于 1a26+Dovedale+Place%2C+Parnell。我无法对 $keyword 进行 urlencode,因为数据库不是标准化形式。数据库地址之间有 2 个空格。那么有没有办法urldecode mysql字符串??我在这里处理近 400 万条记录!!

最佳答案

您可以尝试安装 MySQL UDF(用户定义函数)以在 MySQL 中提供 urlencode()urldecode() 函数。这是链接:http://freecode.com/projects/libmysqludf

关于php - 处理mysql中的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11680039/

相关文章:

php - 创建警报并在警报后继续此页面

php - 使用 PHP 创建 MySQL 表时出现未知错误

php - 显示来自 3 个表的 Laravel 数据

mysql - 循环查询在 Node js 中 Sequelize

mysql - 替换 Amazon Redshift 中列中的单引号字符

mysql - 如何从匹配两个相似列的表中选择不同的 ID?

php - NetBeans IDE - PHP 提示问题

php - 使用 Trigger_Error() 尝试/捕捉

sql - 将 CSV 文件导入 MySQL 数据库的工具?

python - Django MySQL 条目唯一 ID 或 pk