2017-06-25 20 views
1

PHPでMySQLコードに問題があります。私はJoomlaサイトのための自分の検索プラグインを作った。 このプラグインは検索入力から1つの値を検索します。検索ボックスに会社の登録番号または会社名を入力することができます。拡張機能は、1つの表にある2つの列を表示する必要があります。MySQLの2つのカラムで1つの値を検索する

SQL表 "registered_companies" 私のPHPコードで

id | regnumber | name | col4 | col5 | col6 etc 
01 | 17333032 | company1 | bla | bla | bla 
02 | 36302465 | company2 | bla | bla | bla 
03 | 17311161 | company3 | bla | bla | bla 
04 | 651664 | company4 | bla | bla | bla 
05 | 17318599 | company5 | bla | bla | bla 

を私はSQLを持って、このコードで

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query = "SELECT * 
      FROM registered_companies 
      WHERE ".$searchInput." IN(regnumber, name)"; 

を選択します(私はいくつかのバリエーションを試してみました)それは私が数を見つけようとする場合にのみ動作します( regnumber)。 "company1"のようなテキスト文字列を入力すると、SQLは1054 Unknown column 'company1'を 'where句'に返します。

私は試してみてくださいWHERE regnumber LIKE ".$searchInput; もちろん、コマンドは1つの列しか検索せず、複数のLIKEコマンドとORコマンドがすべてエラーに終わってしまいました。

私は間違っていますか?私は何をしたいのですか?あなたは、検索文字列に%を追加する必要が

+1

「stringTOSearch'' –

+0

この作品、THX LIKE 'regnumber LIKE 'stringTOSearch' OR名前。私はこのコードを追加します。regnumber LIKE 'stringTOSearch' OR LIKE '%stringTOSearch%' [/ code] –

答えて

0

まず助けを

THX ..

$searchInput = "%".$searchInput."%"; 

はその後、バインド、準備、実行、あなたのSELECTをオンにする必要があり

$query = "SELECT * FROM registered_companies WHERE regnumber LIKE :searchInput OR name LIKE :searchInput"; 
$dbResult = $db->prepare($sql); 
$dbResult->bindValue(':searchInput', $searchInput, PDO::PARAM_STR); 
$dbResult->execute(); 

while($line = $dbResult->fetch(PDO::FETCH_ASSOC)){ 
    //... do what you need ... 
    // $name = $line['name']; 
} 
+1

クエリに構文エラーがあります。 –

+0

編集したものを試してみてください。 –

0

フェッチ声明:

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query = "SELECT * 
      FROM registered_companies 
      WHERE regnumber = ".$searchInput." OR name LIKE '".$searchInput."%'"; 

これはうまくいくようですが、SQLインジェクションには注意してください。代わりに準備されたステートメントで作業する必要があります。準備されたステートメントのPHP-Docsを見てください。 http://php.net/manual/de/mysqli.prepare.php

regnumbernameのためのあなたのcomaparisionによってはあなたが=LIKEを変更する必要があります。

関連する問題