在本地开发机器(MAMP)上,我的MySQL查询返回正确的大小写。然而,在我的共享主机服务器上,当使用fetch(PDO::FETCH_ASSOC);时,结果是小写的。
我试过以下几种方法:
$db = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASSWORD);
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);但它似乎没有效果,我错过了什么?
示例:
$findUpload = $db->prepare('
SELECT * FROM
uploads
WHERE
slug = :slug
LIMIT 1
');
$findUpload->execute(array(
':slug' => $_GET['entry']
));$_GET['entry']是Zcbc
当我这么做
$getUpload = $findUpload->fetchAll(); // switched to fetchAll temporarily
$singleUpload = $getUpload[0];echo $singleUpload‘’slug‘// ouput zcbc
将以前混合的大小写字符串转换为所有小写。$_GET变量和MySQL条目都是混合大小写字符串。
发布于 2014-05-22 12:09:38
PDO::ATTR_CASE设置列的案例处理。如果我正确地理解了您,那么您将得到带有错误情况的条目的值?
您是否使用PHPMyAdmin或类似工具运行了查询?我怀疑您有多个条目具有相同的弹格,但不同的大小写拼写(pdc对pDc)。由于您使用的是不区分大小写的排序规则(_ci),因此您可能会得到一个拼写不同的条目,而不是您预期的拼写。
对于单个查询,可以使用如下所示的不同排序规则:
SELECT * FROM
uploads
WHERE
slug COLLATE utf8_bin = :slug
LIMIT 1如果希望此行为成为默认行为,则可以更改整个表的排序规则。
ALTER TABLE `tablename` COLLATE utf8_binhttps://stackoverflow.com/questions/23769324
复制相似问题