質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

解決済

3回答

6351閲覧

SQL文のLIKEの後に変数を入れたいのですが、思い通りに入れれません。

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

1クリップ

投稿2019/07/15 15:54

編集2019/07/15 16:03

プログラミング未経験で勉強し始めて現在2ヶ月ほどです。
ECサイトを製作しているのですが、検索機能がうまく作動してくれません。

PHP

1 $sql = 'select ec_item_master.item_id, name, team, brand, price, img, status, stock, ec_item_master.create_datetime 2 from ec_item_master 3 left outer join ec_item_stock 4 on ec_item_master.item_id = ec_item_stock.item_id 5 where ec_item_master.status = 1 699 and name like %'.$word.'% 7100      order by item_id desc limit 0,12'; 8 $stmt = $dbh->prepare($sql); 9 $stmt->execute(); 10 $rows = $stmt->fetchAll();

エラーメッセージ

PHP

1 2Warning 3: Division by zero in 4/home/*************/htdocs/golazo_mvc/model/home_model.php 5on line 699 7 8Warning 9: Division by zero in 10/home/*************/htdocs/golazo_mvc/model/home_model.php 11on line 12100 13 14接続できませんでした。理由:SQLSTATE[42000]: Syntax error or access violation: 1065 Query was empty

エラーメッセージの99,100行目はSQL文に書いてあるところです。
説明下手で申し訳ありませんが、解決方法分かる方おられましたら教えていただけるととても助かります。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

未検証。

php

1$sql = 'select ec_item_master.item_id, name, team, brand, price, img, status, stock, ec_item_master.create_datetime 2 from ec_item_master 3 left outer join ec_item_stock 4 on ec_item_master.item_id = ec_item_stock.item_id 5 where ec_item_master.status = 1 6 and name like :word 7      order by item_id desc limit 0,12'; 8 9$stmt = $dbh->prepare($sql); 10$stmt->bindValue(':word',"%{$word}%"); 11$stmt->execute(); 12$rows = $stmt->fetchAll(); 13

下記のような記事は熟読すると良いです。

今回は#PDO::prepare → PDOStatement::bindValue → PDOStatement::execute の3ステップでクエリを実行するのところ。

投稿2019/07/16 00:15

編集2019/07/16 00:15
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーの原因は検索文字列をシングルクォーテーションで囲んでいないせいだと思いますが、せっかくPDOを使っているのですからbindValueまたはbindParamメソッドを使用した方がセキュリティの面からも良いと思います。

投稿2019/07/15 17:43

javahack

総合スコア1088

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/07/15 22:32

回答ありがとうございます。朝一で何度か試しましたが、記入方法が間違っているのか正常に作動しませんでした。正しい書き方を教えていただけましたらありがたいです。
guest

0

likeによる前方後方一致はインデックスが効かないので
どうせやるならregexpで十分かも

PHP

1 $sql = <<<eof 2select ・・・ 3and name regexp ? 4order by item_id desc limit 0,12 5eof; 6$stmt = $dbh->prepare($sql); 7$stmt->execute([$word]); 8$rows = $stmt->fetchAll();

投稿2019/07/16 01:06

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問