2017-01-12 21 views
1

こんにちは、私はいくつかのソリューションを試みたが、まだ彼らはまだ私のために動作しません。 私は次のコードました:コール()

public function databaseSearch($connection,$keyword){ 
     $test =$connection->query("SELECT * FROM courses WHERE courseKeywords LIKE %?%"); 
     $test->bind_param("s",$keyword); 
     $test->execute(); 
     return $test->get_result(); 
    } 

となって:

$queryRepository = new QueryRepository(); 

$queryRepository->checkKeyword($keyword); 

$result = $queryRepository->databaseSearch($connection,$keyword); 

私はそれが構文エラーはなく、単純なクエリのdidnすることができることを赤:私はそれを呼び出す方法です

Call to a member function bind_param() on a non-object 

をうまく動かない。

+1

[の可能な複製を:

$this->courseKeywords = $courseKeywords 

は "全体" クラスは次のようになりますバインド\ _param非オブジェクト・エラーのw/mysqliの](http://stackoverflow.com/questions/3539523/bind-param-non-object-error-w-mysqli) – Xorifelse

答えて

-1

私はあなたのクエリが( "LIKE courseKeywordsコースSELECT * FROM:s" は)

$テスト= $ Connection(接続) - > Connectクエリのようにすべきだと思います。 //私はそこに問題を発見したパラメータ「S」

・ホープこれはあなたの問題を解決

+0

「S」の文字列値のために滞在されていません?それはmysqliです。 – Chrzanek

+0

"s"は何でもかまいません。必要に応じて置き換えることができます。 – rbcastro17

1

を持っていると仮定。私はプライベート変数を追加する必要がありました:

private $courseKeywords; 

その後bind_param後databaseSearch関数に以下の行を追加します。

class QueryRepository{ 

private $courseKeywords; 
private $rowsAffected; 

public function databaseSearch($connection,$courseKeywords){ 
    $statement = $connection->prepare("SELECT * FROM courses WHERE courseKeywords like ?"); 
    $statement->bind_param("s",$this->courseKeywords); 
    $this->courseKeywords = $courseKeywords; 
    $statement->execute(); 
    $statement->close(); 
    $this->rowsAffected = $connection->affected_rows; 
} 
public function rowsAffected(){ 
     return $this->rowsAffected; 
    }