実現したいこと
問題個所の発見 解決
前提
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
ソースのマークダウンが中途半端になっているので修正ください
str_replaceへの引数はそれぞれ想定の値はきてるのでしょうか(誤字訂正)
$url は事前に定義している$oldUrlで消したいファイルすべてに当てはまる部分になります。
$serchはべつフォルダで管理をしている$urlで選択した部分を置換するも尾になります。
聞き方が悪かったのかもしれませんが、想定の値が来ていることを確認しましたか?
それはどのようにしましたか?
あと、タイトルと内容が合ってない気がするのと「自毒的」という誤字っぽいものもあるので、その他含めて見直してもらえればと
heidisqlの中で一度コードを走らせて4300件ほどデータを取得できることは確認済みです。
いえ。違います。
エラーから以下のように私は聞いています
>str_replaceへの引数はそれぞれ想定の値
DBからの取得については言及していません。
ご自身でも「その部分でエラーが起きているかもしれない」と仰っていますよ。
なので、「じゃあ引数は想定の値がきてるか?」と問うています。
※もちろん str_replaceの機能や仕様についてはPHPマニュアルで確認済みですよね・・?