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

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

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

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

PHP

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

Q&A

1回答

532閲覧

phpでデータベースの情報を削除する方コードを実行させた際にエラーが表示される

taikishatiru

総合スコア0

MySQL

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

PHP

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

0グッド

0クリップ

投稿2023/02/03 01:32

編集2023/02/03 01:57

実現したいこと

問題個所の発見 解決

前提

phpでデータサーバーに保存されているデータを3週間経過で自動的に削除するコードを作成中です。
URLを置き換えるためにstr_replaceを使っていますが、その部分でエラーが起きているかもしれないですい

発生している問題・エラーメッセージ

type error
essage: str_replace(): Argument #2 ($replace) must be of type string when argument #1 ($search) is a string
error string : ""
code : int(0)

該当のソースコード

php

1 2 public function __invoke(): void{ 3 $pdo = DBConnection::getPDO(); 4 $statement = $pdo->query( 5 "SELECT 6 `save_file` 7 FROM 8 `job_posting_upload_history` 9 WHERE 10 `registered_datetime` < (NOW() - INTERVAL 3 WEEK)" 11 ); 12 assert($statement instanceof PDOStatement); 13 $saveFiles = $statement->fetchAll(); 14 $oldUrl = "/home/coffiso/koucharetv.jp/public_html"; 15 foreach($saveFiles as $value){ 16 $url =$oldUrl; 17 $search = ROOT_DIR; 18 $replace = $value; 19 $newUrl = str_replace($search,$replace,$url);; 20 21 $cutSaveFile = substr($value,39); 22 $newSaveFile = $cutSaveFile.ROOT_DIR; 23 unlink($newUrl); 24 25

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

yambejp

2023/02/03 01:36

ソースのマークダウンが中途半端になっているので修正ください
m.ts10806

2023/02/03 03:29 編集

str_replaceへの引数はそれぞれ想定の値はきてるのでしょうか(誤字訂正)
taikishatiru

2023/02/03 01:48

$url は事前に定義している$oldUrlで消したいファイルすべてに当てはまる部分になります。 $serchはべつフォルダで管理をしている$urlで選択した部分を置換するも尾になります。
m.ts10806

2023/02/03 01:54

聞き方が悪かったのかもしれませんが、想定の値が来ていることを確認しましたか? それはどのようにしましたか?
m.ts10806

2023/02/03 01:56

あと、タイトルと内容が合ってない気がするのと「自毒的」という誤字っぽいものもあるので、その他含めて見直してもらえればと
taikishatiru

2023/02/03 01:56

heidisqlの中で一度コードを走らせて4300件ほどデータを取得できることは確認済みです。
m.ts10806

2023/02/03 03:29 編集

いえ。違います。 エラーから以下のように私は聞いています >str_replaceへの引数はそれぞれ想定の値 DBからの取得については言及していません。 ご自身でも「その部分でエラーが起きているかもしれない」と仰っていますよ。 なので、「じゃあ引数は想定の値がきてるか?」と問うています。 ※もちろん str_replaceの機能や仕様についてはPHPマニュアルで確認済みですよね・・?
guest

回答1

0

$searchが文字列のときは$replaceは文字列でないといけません
fetchAllした$saveFilesから取り出したデータを$replaceに設定しているので$replaceが配列になっていますね

投稿2023/02/03 01:57

編集2023/02/03 02:11
yambejp

総合スコア114769

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

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

taikishatiru

2023/02/03 01:59

ありがとうございます。 $valueの部分を文字列におきかえればいいですか?
yambejp

2023/02/03 02:12 編集

> $valueの部分を文字列におきかえればいいですか? 具体的に何をどうしたいかわからないのでなんとも言えませんが 最低でもstr_replaceの仕様に合わせた引数の指定が必要です
taikishatiru

2023/02/03 02:11

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問