【发布时间】:2015-02-09 04:51:08
【问题描述】:
我正在使用 MySQL 工作台运行以下查询,并且我正在从数据库中获得准确的结果:
SELECT *
FROM ODB_RG
WHERE fullAddressV1 = 'רמת גן חרושת 1'
OR fullAddressV2 = 'רמת גן חרושת 1'
OR fullAddressV3 = 'רמת גן חרושת 1'
OR fullAddressV4 = 'רמת גן חרושת 1'
另一方面,运行下面的 php 代码,实际上生成了一个与上面提到的等效的查询,不返回任何记录:
$fullAddress = "1 רמת גן חרושת";
$stmt = $con->prepare("SELECT * FROM ODB_RG WHERE fullAddressV1 = :address1 "
. "OR fullAddressV2 = :address2 OR fullAddressV3 = :address3 "
. "OR fullAddressV4 = :address4");
$stmt->bindParam(':address1',$fullAddress);
$stmt->bindParam(':address2',$fullAddress);
$stmt->bindParam(':address3',$fullAddress);
$stmt->bindParam(':address4',$fullAddress);
$status = $stmt->execute();
可能导致解决方案之间存在差异的唯一合理原因是作为参数传递的希伯来语字符串。
你们中的任何人都知道应该怎么做才能修复它? 提前致谢 !
编辑: 这是我用于相关表的排序规则:
engine=MyISAM charset=UTF8 COLLATE = utf8_general_ci;
【问题讨论】:
-
您的数据库/表/列使用什么排序规则?如果不确定,请使用 UTF8。
-
您的配置是否支持您尝试使用的字符集?
-
@halfer ,请参阅编辑。
-
OT:不要重复地址字符串,你可以写
WHERE :address IN (fullAddressV1, fullAddressV2, fullAddressV3, fullAddressV4)。 -
@Itamar 你得到任何结果,你会做任何错误检查吗
标签: php sql pdo mysql-workbench