0

经过快速搜索,我没有找到解决问题的方法,所以我发布了一个新问题。

所以我必须从 Web 界面(使用 PHP)在 MySQL 数据库中创建视图。

我使用 PEAR 框架与 MySQL(5.0.26) 连接

我有 SQL 请求:

CREATE VIEW test AS SELECT cswc.code_de_la_copie, cswc.service_de_reference, cswc.libelle_de_la_copie, cswc.direction_de_securite_logique
FROM  pressi_copiesServiceWithCibles cswc LEFT OUTER JOIN pressi_servicesReferenceWithCibles srwc ON cswc.service_de_reference = srwc.code_du_service
WHERE cswc.cible is null
  AND (srwc.cible LIKE '%£DOMAIN£%' OR srwc.cible LIKE '%$DOMAIN$%');

当我直接在 mon local MySQL Database 上执行这个请求时,我得到一个 470 行的结果。

但是,当我在我的 PHP 代码中执行这个请求时,我得到了不同的结果(我有 386 行),我不知道为什么!

$values['request'] = "SELECT cswc.code_de_la_copie, cswc.service_de_reference, cswc.libelle_de_la_copie, cswc.direction_de_securite_logique
FROM  pressi_copiesServiceWithCibles cswc LEFT OUTER JOIN pressi_servicesReferenceWithCibles srwc ON cswc.service_de_reference = srwc.code_du_service
WHERE cswc.cible is null
  AND (srwc.cible LIKE '%£DOMAIN£%' OR srwc.cible LIKE '%$DOMAIN$%');";

$baseView = "test";

$sqlView = 'CREATE VIEW '.$baseView.' AS '.$values['request'];
$res =& $this->mdb2->query($sqlView);
if (PEAR::isError($res)) {
   return false;
}

此外,我已经在此之前创建了 6 个视图,没有任何问题(在 PHP 和 MySQL 中的结果相同)

感谢您的帮助

4

1 回答 1

1

请注意,您与数据库的连接对于您在查询中包含的任何字符串值也有 aCHARSET和 a COLLATION。尽管您的查询在这两种情况下看起来都一样,但从 MySQL 服务器的角度来看,它一定不是。

当您通过 PHP 连接时,客户端CHARSET(和/或)可能与通过 MySQL 控制台连接时不同。COLLATION

有关客户端字符集和排序规则的更多信息,请参阅MySQL 手册

为了比较,您可以使用以下查询:

SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
于 2013-06-26T09:16:32.103 回答