[英]Efficient way to check if files exist and update SQL db accordingly
我正在嘗試檢查文件夾中是否存在文件,然后如果不存在,我想更新我的sql數據庫。 到目前為止,我正在遍歷一個ID數組,該ID應該具有一個與數據庫中文件號相對應的數字。 這意味着我要多次查詢sql數據庫。 僅進行一個查詢是否可能且效率更高? 這是我的代碼:
$photo_status = "SELECT id FROM photo_set_table WHERE Photo_added = 1";
$photo_added = mysql_query($photo_status);
if (!$photo_added) {
die('Invalid query: ' . mysql_error());
}
$path = '/home/aXXXXXXX/public_html/';
$path .= '/images_android/images/';
$no_photo_array = array();
while($added = mysql_fetch_array($photo_added))
{
if(!file_exists($path.$added[0].'.jpg')){
array_push($no_photo_array, $added[0]);
}
}//while added
$count_changes = 0;
foreach ($no_photo_array as $value) {
$change_status = "UPDATE photo_set_table SET Photo_added = 0 WHERE id = $value";
$photo_added2 = mysql_query($change_status);
if (!$photo_added2) {
die('Invalid query: ' . mysql_error());
} else {
$count_changes++;
}
} //foreach ($no_photo_array....
echo "The number of affected lines is: ".$count_changes;
mysql_close($connection);
您可以嘗試以下方法:
$count_changes = 0;
if (count($no_photo_array) > 0) {
$sInClause = implode(',', $no_photo_array);
$sSql = "UPDATE photo_set_table SET Photo_added = 0 WHERE id IN (" . $sInClause . ")";
$bStatus = mysql_query($sSql);
if ($bStatus) {
$count_changes = mysql_affected_rows();
} else {
die('Invalid query: ' . mysql_error());
}
} //foreach ($no_photo_array....
echo "The number of affected lines is: ".$count_changes;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.