【问题标题】:MySQL query in PHP with '&' returns different results than phpMyAdmin does带有“&”的 PHP 中的 MySQL 查询返回的结果与 phpMyAdmin 不同
【发布时间】:2012-05-21 14:37:08
【问题描述】:

MySQL(通过 PHP 连接)不返回包含与号 (&) 的记录,但相同的查询在 phpMyAdmin 中可以正常工作。我不确定这是否是整理/字符集问题。这是示例查询:

SELECT distinct(pcs.shop_name) AS shopName 
FROM shops AS ps 
LEFT JOIN category_shop AS cs 
   ON ps.shop_id = cs.shop_id 
WHERE 1=1 
   AND (ps.shop_name LIKE '%P&G%') 
   AND ps.is_active!=2 
ORDER BY ps.shop_display_name ASC

我要搜索的shop_nameP&G

【问题讨论】:

  • 数据库、表、字段的编码是什么?您是否对来自 PHP 的连接使用相同的编码?
  • 这是您在 PHP 代码中使用的 exact 查询吗?
  • Daan,表和shop_name字段的编码为“latin1_swedish_ci”

标签: php mysql


【解决方案1】:

试试这个(我猜你是在使用 GET 来提交表单,如果你对 & 有问题):

$shop_name = urlencode('P&G');

在您的页面上获取该字段值(这意味着您在生成表单时为每个字段值调用 urlencode)。然后在 GET 完成后,只需执行以下操作:

$shop_name = mysql_real_escape_string($_GET['shop_name']);
$query = "SELECT distinct(pcs.shop_name) as shopName 
    FROM shops AS ps 
    LEFT JOIN category_shop AS cs ON ps.shop_id = cs.shop_id 
    WHERE 1=1 
        AND (ps.shop_name LIKE '%{$shop_name}%') 
        AND ps.is_active!=2 
    ORDER BY ps.shop_display_name ASC";

这对你有用吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 2016-02-14
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 2021-11-27
    • 2015-05-28
    • 2015-01-13
    相关资源
    最近更新 更多