2017-07-13 11 views
0

私は、termekテーブルの製品を探しています。Sql where + - マークが検索文字列にある場合の問題

商品名:

Leier Leiertherm 30 N+F tégla 

または

Leier Plan 10/50 N+F tégla, LeierFix univerzális ragasztóhabbal - 10 x 50 x 24,9 cm 

私は、検索フィールドにこれらの単語を入力し、検索するときに、私がどんな結果を取得できませんでした。私は+や - マークに問題があると思う。製品の名前を別の名前に変更することはできません。

誰かが私を助けることができますか?

$keyword = mysqli_real_escape_string($kapcs, $_GET['k']); 
$get_hirek_2 = mysqli_query($kapcs, "SELECT termek_id, termek_nev, termek_seo, termek_brutto, termek_akcios, termek_egyseg, termek_desc, termek_thumb FROM termek WHERE termek_nev LIKE '%$keyword%' OR termek_desc LIKE '%$keyword%' ORDER BY termek_nev ASC LIMIT 50"); 
+0

SQLでは '+'に関して特別なことはありません。 – Barmar

+0

だから、問題は何ですか?私はこれらの製品を見つけ出すことができます。 – user7722712

+0

変数を代入する代わりに準備済みのステートメントを使用してみてください。 – Barmar

答えて

0

私は長い時間前に同じ問題に直面し、 以下はそれを解決し、私は、それが代わりに変数置換のプリペアドステートメントを使用してみてください

$temp_findkeyword = "%".$_POST['findkeyword']."%"; 
$search = mysqli_query($conn,"SELECT * FROM table WHERE field1 like '$temp_findkeyword'); 
+0

それは仕事をしなかった、いくつかの問題があります。 – user7722712

0

あなたのために良い解決策になるかどうかを知るいけませんmysqli_real_escape_stringを使用するよりもSQLインジェクションからの保護が優れています。

$stmt = mysqli_prepare($kapcs, "SELECT termek_id, termek_nev, termek_seo, termek_brutto, termek_akcios, termek_egyseg, termek_desc, termek_thumb 
     FROM termek 
     WHERE termek_nev LIKE ? OR termek_desc LIKE ? 
     ORDER BY termek_nev ASC LIMIT 50"); 
$pattern = "%{$_GET['k']}%'; 
mysqli_stmt_bind_param($stmt, "ss", $pattern, $pattern); 
myqli_stmt_execute($stmt); 
mysqli_stmt_bind_result($id, $nev, $seo, $brutto, $akcios, $egyseg, $desc, $thumb); 
while (mysqli_stmt_fetch($stmt)) { 
    // Use the variables from mysqli_stmt_bind_result() here 
} 
関連する問題