-1

新しいファイルまたは既存のファイルがアップロードされた場合にデータベース行を追加するphpスクリプトが以下にあります。

<?php
session_start();
...//connect to DB

$result = 0;
if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
    $imagesql = "INSERT INTO Image (ImageFile) 
    VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";

    mysql_query($imagesql);
} else {
    $imagesql = "INSERT INTO Image (ImageFile) 
    VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";
    mysql_query($imagesql);
}
mysql_close();
?>

<script language="javascript" type="text/javascript">window.top.stopImageUpload(<?php echo $result ? 'true' : 'false'; ?>, '<?php echo $_FILES['fileImage']['name'] ?>');</script>

しかし、問題は、$ result = 2のときにelseステートメントの下にifステートメントを追加して、データベースの行を削除したいということです。これを試してみると、新規または既存のファイルをアップロードした後、データベース行が挿入されません。

if ($result = 2){
  $imagecancelsql = "DELETE FROM Image 
  WHERE ImageFile = 'ImageFiles/". mysql_real_escape_string($_FILES['fileImage']['name'])."'";
  mysql_query($imagecancelsql);
}

だから私の質問は:必要なデータベースの更新を実行するために、上記のifステートメントをphpスクリプトにどのように配置するのですか?

4

1 に答える 1

1

$ result変数はどこにも定義しないため、ifは実行されません。とにかく、そこに配置する必要があります。

<?php
session_start();
...//connect to DB

$result = 0;
if( file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
    $imagesql = "INSERT INTO Image (ImageFile) 
    VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";

    mysql_query($imagesql);
} else {
    $imagesql = "INSERT INTO Image (ImageFile) 
    VALUES ('ImageFiles/".mysql_real_escape_string($_FILES['fileImage']['name'])."')";
    mysql_query($imagesql);
}

if ($result == 2){
  $imagecancelsql = "DELETE FROM Image 
  WHERE ImageFile = 'ImageFiles/". mysql_real_escape_string($_FILES['fileImage']['name'])."'";
  mysql_query($imagecancelsql);
}

mysql_close();
?>
于 2012-05-15T18:06:06.750 に答える