我會盡量簡練,只在這裏顯示相關信息:奇怪的行爲與MySQL和PHP pdo,最新錯誤?
我有兩個幾乎相同的代碼段,一個可以工作,另一個不可以。
$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轉儲查詢它看起來像這樣:
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轉儲查詢我得到ŧ他:
SELECT * FROM active_notifications WHERE direction = '>' AND 114.19942 > trigger_price AND currency = '£'
因此,所有是正確的了這一點,
當我直接在phpMyAdmin預期的結果返回運行任創建的查詢,但是當我的var_dump的£英鎊查詢我的$結果得到一個空數組。
起初我雖然可能是因爲我重複使用變量名,但我試圖完全隔離,美元查詢總是起作用,GBP永遠不會工作,並總是導致返回一個空數組。
就像我說的兩個生成的查詢在phpMyAdmin正常工作(當在數據庫中直接運行)
唯一的區別是,在一個查詢我有一個£符號和其他我有一個$符號,
英鎊符號是PHP中的一種不允許的符號或類似的東西嗎?
感謝, 約翰
檢查php和mysql字符編碼。我在想你的php的'''和你的mysql的'''不一樣。理想情況下,您可以避免使用'gpb','usd'等等貨幣字段的所有混亂。 – Shomz
你究竟是什麼意思?我怎麼做? – Woodstock
你傳說中,我只是把這個放到了我的pdo init中:PDO :: MYSQL_ATTR_INIT_COMMAND =>「SET NAMES utf8」,所有這些都很好,希望這是正確的?似乎工作,如果你想要把答案我會標記爲正確的歡呼 – Woodstock