SQL文をユーザー定義関数でまとめたいのですが、うまくいきません。
以下の処理を全てfunction search() {
}の中に入れるのは間違っていますか? 関数名はsearchとしました。
try {
$sql = 'SELECT product.id, name, price, img, status, stock
FROM product
JOIN item_stock
ON product.id = item_stock.stock_id
WHERE status = 1';
$stmt = $dbh->prepare($sql);
$stmt->execute();
$result = $stmt->fetchALL();
$err_msg[] = ($keyword . 'を含む商品は見つかりませんでした。');
} catch (PDOException $e) {
$err_msg[] = '商品を取得できませんでした。';
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
みなさんの言ってることを要約して貴方の補足質問に答えるなら、
つまりは↓こういうことです。
function search ($dbh, $keyword ) {
// 処理
$result = $stmt->fetch(PDO::FETCH_ASSOC);
return $result;
}
$result = search($dbh, $keyword);
if(empty($result)){
$err_msg[] = ($keyword . 'を含む商品は見つかりませんでした。');
}
No.3
- 回答日時:
SQL内にありませんが、$keywordは引数として受け取るべきでしょうね。
あとモデル層の操作としては、問い合わせ結果をそのまま呼び出し元へ返却すべきです。
データがあった時、なかった時にどう制御するかは、その時によって異なるわけですから、その制御がモデル層と密に関わってはいけません。
No.2
- 回答日時:
ハマりそうな箇所が散見されます
ユーザー関数にするとして、$dbhなどをどう持ち込むか
戻り値を取り出すかが全然考慮されてなさそうです。
検索条件をうけとらないならprepareは不要ですqueryで十分。
fetchAllするときはassocを利用してください
try-catchは検索がヒットしたかしないかではありません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<VB.NET>INSERT文でDBにデータ...
-
JAVA SQLServerException 列名 ...
-
Pro*Cの構文エラー
-
ResultSetインターフェイスでの...
-
CakePHPでquery()を使うときに...
-
PHP初心者です。syntax error, ...
-
PHPのUndefined index や varia...
-
php postgres Insert と updat...
-
insert1つの処理でもトランザ...
-
phpでforeach ($stmt as $row)...
-
VB.NETでSQLを作る時のカンマの...
-
MySQLでデータベースにデータin...
-
実行時エラー3131 FROM 句の構...
-
VBAをつかってクエリの情報を抽...
-
テキストボックスに入れた内容...
-
VB.NET
-
SQL文が実行できません
-
while文の中にwhile文を書きた...
-
in 'where clause'のエラーの理由
-
SQL文2つ実行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JAVA SQLServerException 列名 ...
-
insert1つの処理でもトランザ...
-
Pro*Cの構文エラー
-
<VB.NET>INSERT文でDBにデータ...
-
データベースに存在するデータ...
-
ResultSetインターフェイスでの...
-
C# で発生したException.Messag...
-
Q&Aサイトを作成していてURLの...
-
VBA ACCESS SQL...
-
MySQLのINSERT時にたまに重複に...
-
INSERT,DELETEを同時に
-
【初歩】配列の格納データ数だ...
-
PHP&MySQLでの文字列+数列の一...
-
php postgres Insert と updat...
-
VB.NET エラーになる箇...
-
OR検索を実装したい
-
PHP初心者です。syntax error, ...
-
mysqliを使ってデータベースを...
-
like検索の複数キーワードで、...
-
CakePHPとMySqlを使用していま...
おすすめ情報
function search () {
// 処理
}
とすると、上記の()の中に何を入れればいいかが
よくわからないです。
関数名をsearchとして
function search () {
// 処理
}
とすると、上記の()の中に何を入れればいいかが
よくわからないです。