[解決済み] $wpdb->update または $wpdb->insert を実行すると、引用符の前にスラッシュが追加される
2022-02-10 23:09:17
質問
この質問はいろいろなところで何度か出されていますが、決定的で明確な答えが見つかっていません。ほとんどの解決策は、php.iniファイルでMagic Quotesを無効にすること(私はそうしました)、またはWPのコアファイルを修正することを勧めているものです。
とにかく、質問はこうです:なぜ$wpdb->insertや$wpdb->updateを使うたびに、シングルクォートの前にスラッシュが追加されるのでしょうか?例えば、以下のように。
<ブロッククオートいちごを食べたことがある になる I've eaten strawberries
以下は、私が使用したサンプルコードです。
$id = $_POST['id'];
$title = $_POST['title'];
$message = $_POST['message'];
$wpdb->update('table_name', array('id'=>$id, 'title'=>$title, 'message'=>$message), array('id'=>$id))
同じ問題がここにもありました。 Wordpress のデータベース出力 - SQL インジェクションのエスケープを削除する が、quot;disable magic quotes"を除けば、解決されませんでした。
解決するには?
一日かけて考えた結果、答えは以下の通りです。
Wordpressは$_POST宣言時にエスケープしますが、実際の挿入時にはエスケープしません。
$id = stripslashes_deep($_POST['id']); //added stripslashes_deep which removes WP escaping.
$title = stripslashes_deep($_POST['title']);
$message = stripslashes_deep($_POST['message']);
$wpdb->update('table_name', array('id'=>$id, 'title'=>$title, 'message'=>$message), array('id'=>$id));
こうすることで、WPは引用符の前にスラッシュを追加しないようになります。
関連
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】Apache + PHPで「ヘッダの前にスクリプトの出力が終了する」件
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み] PHPの配列を別の配列にコピーする関数はありますか?
-
[解決済み] wpdbを使用してデータを挿入する方法
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み] "INSERT IGNORE" vs "INSERT ... ON DUPLICATE KEY UPDATE"
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】既に開始されているPHPセッション【重複あり
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み】PDOException SQLSTATE[HY000] [2002] そのようなファイルまたはディレクトリがありません。
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
[解決済み] mysql_field_nameを新しいmysqliに変更します。
-
[解決済み] PHP 未定義関数への呼び出し