PHPでファイルをアップロードするコードを書いています。IF
しかし、その声明には未知の奇妙な問題があります。true と false の両方の状態で操作を行います。以下のコードを見てください。
if (is_uploaded_file($_FILES['catalogue']['tmp_name']))
{
$ext = find_extension('catalogue');
$ext_array = array('pdf');
if (!in_array($ext,$ext_array))
{
// echo something for error message.
}
else
{
echo ' Step1 ';
@unlink ('../../catalogues/'.$id.'.pdf');
if(@move_uploaded_file($_FILES['catalogue']['tmp_name'],"../../catalogues/".$id.'.pdf'))
{
@chmod ("../../catalogues/".$id.".pdf",'644');
$sql = "UPDATE tbl_products SET catalogue = ? WHERE id = ?";
$q = $db->prepare($sql);
$query = $q->execute(array($id.'.pdf',$id));
}
}
}
else
{
echo ' Step2 ';
@unlink ('../../catalogues/'.$id.'.pdf');
$sql = "UPDATE tbl_products SET catalogue = ? WHERE id = ?";
$q = $db->prepare($sql);
$query = $q->execute(array('',$id));
}
そして結果はStep1 Step2です!
したがって、ファイルが正常にアップロードされると、新しいファイルがアップロードされてデータベースに設定されます。その後、ステップ 2 で削除され、データベースのフィールドは空になります。:(
これは私にとって非常に奇妙です。助けてください。
注: find_extension()
function と$id
は、これらのコード行の前に定義されています。