3

ここの情報に基づいて、MySQLクエリ文字列には 、pdoクエリを作成しようとしているものが含まれています?

以下で実験した

SELECT * FROM Table WHERE Column LIKE %?%

SELECT * FROM Table WHERE Column LIKE ?%

SELECT * FROM Table WHERE Column LIKE %?

何も機能しません。エラーを取得

構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。near '%... を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

試してみましSELECT * FROM Table WHERE Column LIKE ?たが、これは対象外ですcontains

目的はクエリを取得することですSELECT * FROM Table WHERE Column contains ?

位置プレースホルダー ( )の正しい pdocontainsステートメントは何ですか??

4

5 に答える 5

7

PHP経由で文字列の値を連結してこれを試してください。

$value = "valueHere";
$passThis = "%" . $value . "%";
// other pdo codes...
$stmt = $dbh->prepare("SELECT * FROM Table WHERE Column LIKE ?");
$stmt->bindParam(1, $passThis);
// other pdo codes...
于 2013-06-21T08:34:38.103 に答える
3

同様に引用符を追加した後。例えば:-like '%?%'

すなわち:

SELECT * FROM table_name WHERE column_name like '%field_name%';
于 2013-06-21T08:32:45.500 に答える
1

%パラメータをクエリに渡す前に、パラメータの前後に文字を配置するか、

SELECT * FROM Table WHERE Column LIKE '%' + ? + '%'

SELECT * FROM Table WHERE Column LIKE ? + '%'

SELECT * FROM Table WHERE Column LIKE '%' + ?

これは失敗しますが?連結すると null になるため、null です。合体を使用できます

SELECT * FROM Table WHERE Column LIKE '%' + Coalesce(?,'') + '%'

SELECT * FROM Table WHERE Column LIKE Coalesce(?,'') + '%'

SELECT * FROM Table WHERE Column LIKE '%' + Coalesce(?,'')
于 2013-06-21T08:44:32.360 に答える
0

準備済みステートメントを使用したい場合は、http://php.net/manual/de/pdo.prepared-statements.phpをご覧ください。

SELECT * FROM REGISTRY where name LIKE '%?%'
于 2013-06-21T08:34:28.747 に答える