Php 检查文件是否存在并相应更新SQL db的有效方法

Php 检查文件是否存在并相应更新SQL db的有效方法,php,sql,Php,Sql,我试图检查文件夹中是否存在文件,如果不存在,我想更新我的sql数据库。现在,我正在遍历一个id数组,该数组应该有一个与数据库中的文件号对应的数字。这意味着我要多次查询sql数据库,而不是一次查询。只进行一次查询是否可能更有效?下面是我的代码的样子: $photo_status = "SELECT id FROM photo_set_table WHERE Photo_added = 1"; $photo_added = mysql_query($photo_status); if (!$ph

我试图检查文件夹中是否存在文件,如果不存在,我想更新我的sql数据库。现在,我正在遍历一个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;

在目录中使用glob()并将文件列表与数据库中的列表与类似于array_diff()的内容进行比较可能会更有效一些。此外,mysql_*函数已被弃用,您应该去掉它们并用mysqli或PDO替换。尽管mysql_u受影响的_urows方法不起作用,但这似乎还可以。我还没来得及尝试两个脚本的比较,但这正是我想要做的。谢谢你的帮助!