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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

2927閲覧

wp プラグインエラー「wpdb::prepare が誤って呼び出されました。」

nekosuki

総合スコア8

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2019/01/26 07:19

wpのバージョンアップを頼まれ作業していたところ、使用しているプラグインで以下のエラーが発生しました。
解決方法を模索しているのですが、解決することができないため、知恵をお借りしたく投稿した次第です。

前提

以下の環境にアップーデートしたところプラグインエラーを発見しました。

動作環境
・php 7.2.10
・MySQL 5.7.17

発生したエラーメッセージ

Notice: wpdb::prepare が誤って呼び出されました。wpdb::prepare() のクエリ引数にはプレースホルダーが必要です。 Notice: wpdb::prepare が誤って呼び出されました。渡された引数の数 (1) に対する適正なプレースホルダー数 (0) がクエリーに含まれていません。

該当箇所と思われるソースコード

php

1$dummyArgs = "%s%"; 2 3//間取り 4$sql = " SELECT DISTINCT PM.meta_value AS madorisu,PM_2.meta_value AS madorisyurui"; 5$sql .= " FROM ((($wpdb->posts AS P"; 6$sql .= " INNER JOIN $wpdb->postmeta AS PM ON P.ID = PM.post_id) "; 7$sql .= " INNER JOIN $wpdb->postmeta AS PM_1 ON P.ID = PM_1.post_id) "; 8$sql .= " INNER JOIN $wpdb->postmeta AS PM_2 ON P.ID = PM_2.post_id) "; 9 10//検索 SQL 表示制限 INNER JOIN 11$sql .= apply_filters( 'inc_archive_kensaku_sql_inner_join', '' ); 12 13$sql .= " WHERE P.post_status='publish' AND P.post_password = '' AND P.post_type ='fudo' "; 14$sql .= " AND PM_1.meta_key='bukkenshubetsu'"; 15$sql .= " AND CAST( PM_1.meta_value AS SIGNED ) ".$shu_data.""; 16$sql .= " AND PM.meta_key='madorisu'"; 17$sql .= " AND PM_2.meta_key='madorisyurui'"; 18 19//検索 SQL 表示制限 WHERE 20$sql .= apply_filters( 'inc_archive_kensaku_sql_where', '' ); 21 22$sql = $wpdb->prepare($sql,$dummyArgs);

試したこと

その1.

$sql = $wpdb->prepare($sql,$dummyArgs);

上記の一文を停止するとエラーが表示されなくなりました。
そのため、上記コードの記述が原因と考えております。

その2.

$wpdb->prepare($sql,$dummyArgs);

の第二引数の値を0やnullに変更してみたりしましたが、エラーは解消されませんでした。

何か、指摘点やアドバイスをいただけますと幸いです。
宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Notice: wpdb::prepare が誤って呼び出されました。wpdb::prepare() のクエリ引数にはプレースホルダーが必要です。

Notice: wpdb::prepare が誤って呼び出されました。渡された引数の数 (1) に対する適正なプレースホルダー数 (0) がクエリーに含まれていません。

そのままかと。Codex で確認すると良いです。

投稿2019/01/26 07:37

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

nekosuki

2019/01/26 08:06

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問