前提・実現したいこと
PHP(PDO)を使用したSQL文を使ってMYSQL内のテーブルレコードの存在チェックを行いたいです。
SELECT文を使用してテーブルにレコードがあればUPDATE、無ければINSERTを行いたいと思っているのですが、上手くいきません。
var_dumpを使って存在チェックの基点にしたい$search_url_resultの中身を追ってみましたが最初の一巡だけ存在したレコードの配列が取得でき、それ以降はbool(false)となってしまいます。
自身の知識不足ではないかと思うのですが...どなたかアドバイスいただけないでしょうか?
発生している問題・エラーメッセージ
該当のソースコード
for ($i = 0; $i < count($images); $i++) {
$image_single = $images[$i];
$search_url = "SELECT * FROM images WHERE image_url = :image_url";
$stmt = $dbh->prepare($search_url);
$stmt->bindValue(':image_url',$image_single,PDO::PARAM_STR);
$stmt->execute();
$search_url_result = $stmt->fetch(PDO::FETCH_ASSOC);
if ($search_url_result) {
//見つかったら更新
} else {
//見つからなかった場合入れ込み
}
unset($stmt);
unset($search_url_result);
}
試したこと
補足情報(FW/ツールのバージョンなど)
遅くなりました。
こちらSHOW CREATE TABLE images;
を実行した結果になります。
images | CREATE TABLE images
(
id
int(11) NOT NULL AUTO_INCREMENT,
image_url
varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL,
create_date
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id
),
UNIQUE KEY id_UNIQUE
(id
)
) ENGINE=InnoDB AUTO_INCREMENT=534 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci |
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/31 15:34
2021/02/01 01:49
2021/02/02 01:32
2021/02/02 08:27
2021/02/02 08:30
2021/02/03 15:47
2021/02/04 03:53