2016-06-16 10 views
0

ファイルを添付するためのオプションがあるページを作成しています。ファイルに名前に一重引用符が付いていると、エラーが発生します。これは私が試した方法です:ファイル名にmysqlがあると添付ファイルが動作しない

$id = intval(mysqli_real_escape_string($mysqli, $_REQUEST["id"])); 
     $upload_directory = "uploads/attachments/"; 
     $result = file_upload("attachment", "../".$upload_directory); 
     if($result[status] == true) { 
      $query = "insert into `attachments` 
      (
       `id`, 
       `file_name`, 
       `file_extension`, 
       `file_size`, 
       `uploaded_file_name`, 
       `uploaded_file_path` 
      ) 
      values 
      (
       '$id', 
       '".$result[file_name]."', 
       '".$result[file_extension]."', 
       '".$result[file_size]."', 
       '".$result[uploaded_file_name]."', 
       '".$upload_directory.$result[uploaded_file_name]."' 
      )"; 

これは私が得たエラーです:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '2016.xlsx' 
       'xlsx', 
       '7988', 
       '1466056157029.xlsx', 
       'upload' at line 15 

私はこれが問題になる場所である知っている:「『。$ [ファイル名]結果』」。問題は私が使用した一重引用符のためです。私は何をすべきか?私は何を追加すべきですか?

+4

あなたは、インサート文のフィールドリストで「recorded_by」と「recorded_datetime」を逃している – Jens

+0

プリペアドステートメントを学ぶコードの下を参照してください。 – Jeff

+1

「私はエラーが発生しました」 - 次回はそのエラーを投稿します。彼らは理由がある - あなたに何が間違っているか教えてくれる。 – Jeff

答えて

1

一重引用符を追加します。ファイル名に'を使用しているので、addslashes()を使用し、フェッチするときはstripslashes()を使用してください。またはファイル名から'を削除します。

$query = "insert into `attachments` 
     (
      `id`, 
      `file_name`, 
      `file_extension`, 
      `file_size`, 
      `uploaded_file_name`, 
      `uploaded_file_path` 
     ) 
     values 
     (
      '$id', 
      '".addslashes($result['file_name'])."', 
      '".$result['file_extension']."', 
      '".$result['file_size']."', 
      '".$result['uploaded_file_name']."', 
      '".$upload_directory.$result['uploaded_file_name']."' 
     )"; 
+0

同じエラーがありました。 – SSS

+0

あなたはここに投稿してください。echo $ query; – Vinie

+0

attachments' \t \t \t( \t \t \t \t 'id'、 \t \t \t \t' file_name'、 \t \t \t \t 'file_extension'、 \t \t \t \t' file_size'、 \t \t '挿入\t \t 'uploaded_file_name'、 \t \t \t \t 'uploaded_file_path'、 \t \t \t \t' recorded_by'、 \t \t \t \t 'recorded_datetime' \t \t \t) \t \t \t値 \t \t \t( \t \t \t \t '19'、 \t \t \t \t「ダードーダウノート」2016。XLSX」、 \t \t \t \t '' は、 \t \t \t \t '7988'、 \t \t \t \t '1466057906111.xlsx' を、 \t \t \t \t 'アップロード/添付ファイル/ 1466057906111.xlsx'、XLSX \t \t \t \t '46'、 \t \t \t \t '2016-06-16 11:48:26 ' \t \t \t – SSS

0

挿入クエリで引数の数が一致しません。 一重引用符を使用する

ex: '".$result['file_name']."' 
+0

私は同じエラーの男です。 – SSS

関連する問題