()を含むPDO LIKEクエリの実行にいくつかの問題があります。PDO/MYSQL()内のかっこ()
<?php
...
$text_with_parentheses = '%'.$text_with_parentheses.'%'
$sth = $dbh->prepare('SELECT * FROM '.$table.' WHERE alarm LIKE :alarm');
$sth->bindParam(':alarm' , $text_with_parentheses);
$sth->execute();
$response = $sth->fetch();
...
?>
私が照会している文字列値は、varchar utf8_uncode_ci列に格納されたアラームテキストです。それはこのようになります:
'ABCD。ステータスABCD(6):私が括弧をエスケープする方法を見つけ出すことはできませんようだ
「(失敗)。 PHP/PDO経由でMYSQLコンソールで直接テストしました。テストのために私は、MYSQLコンソールで直接フォローをテストしました
SELECT * FROM `table` WHERE `column`='ABCD. Status ABCD (6): (fail)'
結果が0です。
任意の結果を得るための唯一の方法 - の両方PDOとMYSQLコンソールでは - やっている:
SELECT * FROM `table` WHERE `column` LIKE 'ABCD. status ABCD%'
をしかし、それは実行可能でないいくつかの値を返します。カッコが含まれていない値を検索すると、うまく動作します。
誰もが考えている?これはMYSQLの問題のようです。
使用rawurlencode($ value);テストページで入力と出力を確認します。それは仕事になった。 あなたは正しいと思われます(ofcourse;))。私はいくつかの睡眠を得るより良いと私は明日もコードを実行します。 –
送信されたアラームの一部に二重引用符(")が含まれていて、保存されたコピーが%22(URLエンコード)として出ていることが実際に分かった。 –