簡潔にするために、関連する情報のみをここに表示します。
ほぼ同じコードが 2 つあり、1 つは機能し、もう 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 ダンプすると、次のようになります。
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 で直接実行すると、期待される結果が返されますが、£gbp クエリの $result を var_dump すると、null 配列が得られます。
最初は、変数名を再利用していたことが原因かもしれませんが、両方を完全に分離して試してみました.USDクエリは常に機能し、GBPは機能せず、常にnull配列が返されます.
私が言ったように、生成されたクエリは両方ともPhpMyAdminで正しく機能します(データベースに対して直接実行した場合)
唯一の違いは、1 つのクエリには £ 記号があり、もう 1 つのクエリには $ 記号があることです。
£ 記号は、PHP で許可されていない記号のようなものですか?
ありがとう、ジョン