1

我会尽量简洁,只在这里显示相关信息:

我有两段几乎相同的代码,一段有效,另一段无效。

$query = $pdo->prepare("SELECT * FROM active_notifications WHERE direction = '>' AND $usdCurrent > trigger_price AND currency = '$'");
$query->execute();  
var_dump($query);

$result = $query->fetchall((PDO::FETCH_ASSOC));
var_dump($result);

上面的代码有效,当我 var dump 查询时,它看起来像这样:

SELECT * FROM active_notifications WHERE direction = '>' AND 182.62000 > trigger_price AND currency = '$'

当我尝试使用稍微不同的代码时,我的问题出现了,我将 $ 符号换成 £ 符号

这是代码:

$query = $pdo->prepare("SELECT * FROM active_notifications WHERE direction = '>' AND $gbpCurrent > trigger_price AND currency = '£'");
$query->execute();  
var_dump($query);

$result = $query->fetchall((PDO::FETCH_ASSOC));

var_dump($result);

当我 var dump 查询时,我得到以下信息:

SELECT * FROM active_notifications WHERE direction = '>' AND 114.19942 > trigger_price AND currency = '£'

所以到目前为止一切都是正确的,

当我直接在 PhpMyAdmin 中运行创建的查询时,会返回预期的结果,但是当我 var_dump £gbp 查询的 $result 时,我得到一个空数组。

起初我虽然可能是因为我正在重用变量名,但我完全隔离地尝试了这两种方法,USD 查询总是有效,而 GBP 永远不会有效,并且总是导致返回一个空数组。

就像我说的那样,生成的两个查询在 PhpMyAdmin 中都能正常工作(直接针对数据库运行时)

唯一的区别是,在一个查询中我有一个 £ 符号,而另一个我有一个 $ 符号,

£ 符号是 PHP 中不允许使用的符号还是类似的符号?

谢谢,约翰

4

1 回答 1

3

检查 php 和 mysql 字符编码。我在想你的 php£和你的 mysql 不一样£

理想情况下,您可以通过使用 , 等... 来避免所有'gpb'混乱'usd'

从OP:

我只是把它拍到我的 pdo init 中:PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"一切都很好。

于 2013-10-19T13:11:03.787 回答