私は、バックスラッシュを含む文字列である定数を持っています\
。MySQLとPHPエスケープバックスラッシュ
問題は、MySQLが期待した動作ではないこの文字をエスケープしているようです。ここで
コードです:
const METHOD_TYPE_CREDITCARD = "Braintree\CreditCard";
$sql = "SELECT transaction_id AS id,
CASE
WHEN source_type = '0' THEN '".PaymentGateway::METHOD_TYPE_CREDITCARD."'
END AS source
FROM transactions WHERE invoice_id = :id"
それは確かに適切にクエリを実行しますが\
をエスケープします。出力は次のようになります。
[id] => myx0kpe8
[source] => BraintreeCreditCard
何を試してみましたか?同じ結果を
const METHOD_TYPE_CREDITCARD = "Braintree\\CreditCard";
これはバックスラッシュです。 \\それがエスケープします。よく書かれているメソッドの数と同じです。 – Strawberry
@Strawberryはい、\\でエスケープすることができます。\\ PHPでエスケープしますが、MySQLはまだエスケープして 'BraintreeCreditCard'を出力しているようです。 – user3284463
' pdo 'または' mysqli' –