2016-07-12 4 views
0

添付ファイルを更新する場所を作成しました。その際、同じ名前、サイズ、拡張子のファイルが添付されている場合、添付ファイルテーブルを更新する必要はありません。これがシナリオです。これは私がやろうとした方法です:PHPでデータを取得

else if($mode == "attachment_update") { 
      $id = intval(mysqli_real_escape_string($mysqli, $_REQUEST["_id"])); 
      $upload_directory = "upload/attachment/"; 
      $result = file_upload("attachment", "../".$upload_directory); 

      $file_name = '".addslashes($result[file_name])."'; 
write_log($file_name); 
      $file_extension = '".$result[file_extension]."'; 
write_log($file_extension); 
      $file_size = '".$result[file_size]."'; 
write_log($file_size); 
      $uploaded_file_name = '".$result[uploaded_file_name]."'; 
write_log($uploaded_file_name); 
      $uploaded_file_path = '".$upload_directory.$result[uploaded_file_name]."'; 
write_log($uploaded_file_path); 

      $query_select = "SELECT 
           file_name, 
           file_extension, 
           file_size, 
           uploaded_file_name, 
           uploaded_file_path 
          FROM 
           attachments 
          WHERE 
           id = 'id';"; 
      $result1 = mysqli_query($mysqli, $query_select) or throwexception(mysqli_error($mysqli));     
      $row = mysqli_fetch_row($result1); 

      write_log($row[0]); 
      write_log($row[1]); 
      write_log($row[2]); 
      write_log($row[3]); 
      write_log($row[4]); 


      if($row[0] == $file_name && 
       $row[1] == $file_extension && 
       $row[2] == $file_size && 
       $row[3] == $uploaded_file_name && 
       $row[4] == $uploaded_file_path) 
      { 
       write_log("inside if"); 
      } else { 
       if($result[status] == true) { 
         $query = "UPDATE 
            attachments 
           SET 
            file_name = '".addslashes($result[file_name])."', 
            file_extension = '".$result[file_extension]."', 
            file_size = '".$result[file_size]."', 
            uploaded_file_name = '".$result[uploaded_file_name]."', 
            uploaded_file_path = '".$upload_directory.$result[uploaded_file_name]."', 
            recorded_by = '$recorded_by', 
            recorded_datetime = '$recorded_datetime' 
           WHERE 
            id = 'id';"; 
         mysqli_query($mysqli, $query) or throwexception(mysqli_error($mysqli)); 
        } 
      } 


      echo json_encode(array("message" => "Updated successfully")); 
      exit; 
     } 

事は条件をします。すべてがtrueの場合、テーブルは更新されません。いずれかが失敗しても、テーブルは更新されます。

ここで問題は、$ file_name、$ file_extension、$ file_size、$ uploaded_file_nameがnullになることです。私はそれを取得する方法を知らない。誰かがそれらのデータを取得する方法を教えてもらえますか?そうすればif条件でそれをチェックできますか?

+0

更新しようとしているのと同じIDを持つレコードがデータベースにあります – dev

+0

なぜこのようなものがありますか?引用符で囲みます(最初は$ file_nameを定義します) – kerv

+0

@dharmendrachaudhary:はい。以前に添付されたファイルがそこにあります。 – SSS

答えて

0

あなたの場合、選択クエリを起動する必要はありません。更新クエリにAND条件を追加するだけです。

if ($mode == "attachment_update") { 
    $id = intval(mysqli_real_escape_string($mysqli, $_REQUEST["_id"])); 
    $upload_directory = "upload/attachment/"; 
    $result = file_upload("attachment", "../" . $upload_directory); 

    $file_name = '".addslashes($result[file_name])."'; 
    write_log($file_name); 
    $file_extension = '".$result[file_extension]."'; 
    write_log($file_extension); 
    $file_size = '".$result[file_size]."'; 
    write_log($file_size); 
    $uploaded_file_name = '".$result[uploaded_file_name]."'; 
    write_log($uploaded_file_name); 
    $uploaded_file_path = '".$upload_directory.$result[uploaded_file_name]."'; 
    write_log($uploaded_file_path); 

    $query = "UPDATE 
          attachments 
         SET 
          file_name = '" . addslashes($result[file_name]) . "', 
          file_extension = '" . $result[file_extension] . "', 
          file_size = '" . $result[file_size] . "', 
          uploaded_file_name = '" . $result[uploaded_file_name] . "', 
          uploaded_file_path = '" . $upload_directory . $result[uploaded_file_name] . "', 
          recorded_by = '$recorded_by', 
          recorded_datetime = '$recorded_datetime' 
         WHERE 
          id = 'id' 
          and file_name <> '" . addslashes($result[file_name]) . "', 
          and file_extension = '" . $result[file_extension] . "', 
          and file_size = '" . $result[file_size] . "', 
          and uploaded_file_name = '" . $result[uploaded_file_name] . "', 
          and uploaded_file_path = '" . $upload_directory . $result[uploaded_file_name] . "', 
;"; 
    mysqli_query($mysqli, $query) or throwexception(mysqli_error($mysqli)); 

    echo json_encode(array("message" => "Updated successfully")); 
    exit; 
} 
+0

それは問題ありません。うまくいきます。これらの変数に対してこのようにデータを取得する必要がある場合は、どうすればよいですか? – SSS

0

あなたの質問はより明確に必要です。

あなたが機能を共有することができ、 $結果= file_upload( "添付ファイル"、」../".$upload_directory)。

$ filenameと$ rowの値をログに記録できますか?

write_log($ file_name);

AND

write_log($行[0])。

+0

これらのログを記録しているうちに、#row [0]の値を取得しますが、取得している$ file_nameの値はゼロです。 – SSS

関連する問題