質問編集履歴

1 追記

YutaNkai

YutaNkai score 50

2019/02/10 03:07  投稿

PHPからLIKEを使用したDB値取得
```PHP
   public function searchhotels($word)
   {
       $sql = "select hotel_id, country_code from areas where area like ?";
       $stmt = $this->db->prepare($sql);
       /*❶*/$stmt->bindParam(1, "'%" . $word . "%'", PDO::PARAM_STR);
       // ❷$stmt->bindValue(1, "'%{$word}%'", PDO::PARAM_STR);
       $stmt->execute();
   }
```
という関数なのですがどこが間違っておりますか。
```
select hotel_id, country_code from areas where area like '%地名%';
```
これでをMySQLで動かすと値がきちんと取得できます。
❷の文を実行するとNULLが返ってきますが画面は表示されます。
❶を実行すると
```
Fatal error: Uncaught Error: Cannot pass parameter 2 by reference in /Applications/MAMP/htdocs/BookingSite/Database.php:32 Stack trace: #0 /Applications/MAMP/htdocs/BookingSite/showhotels.php(12): Database->searchhotels('\xE3\x82\xBB\xE3\x83\x96') #1 {main} thrown in /Applications/MAMP/htdocs/BookingSite/Database.php on line 32
```
となります。間違いを教えてください
となります。間違いを教えてください
変数で入力するとあった為、
```PHP
 public function searchhotels($word)
   {
       $sql = "select hotel_id, country_code from areas where area like ?";
       $searchword = "'%{$word}%'";
       $stmt = $this->db->prepare($sql);
       $stmt->bindParam(1, $searchword, PDO::PARAM_STR);
       // $stmt->bindValue(1, "'%{$word}%'", PDO::PARAM_STR);
       $stmt->execute();
   }
```
のように変更しましたが、NULLが返ってきます。
  • PHP

    26462 questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    7772 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る