간결하게 노력하고 여기에 관련 정보 만 표시하겠습니다.
거의 동일한 두 개의 코드가 있는데 하나는 작동하고 다른 하나는 작동하지 않습니다.
$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에서 올바르게 작동합니다 (데이터베이스에 대해 직접 실행될 때).
유일한 차이점은 한 쿼리에는 £ 기호가 있고 다른 쿼리에는 $ 기호가 있다는 것입니다.
£ 기호는 PHP에서 허용되지 않는 기호입니까?
고마워, 존
PHP 및 mysql 문자 인코딩을 확인하십시오. 귀하의 PHP £
가 귀하의 mysql과 동일하지 않다고 생각합니다 £
.
이상적으로, 당신은 사용하여 모든 혼란을 피할 것 'gpb'
, 'usd'
통화 필드에 ... 등.
OP에서 :
나는 이것을 나의 pdo init에 넣었다 . PDO :: MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" 그리고 모두 좋다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다