2017-05-27 18 views
0

ファイルをデータベースにアップロードできるページを作成しました。ただし、ファイル名に特殊文字がある場合は常に、データベース内の名前が変更されます。たとえば、私はBiñan.pdfという名前のpdfファイルをBIa'.pdfに変更します。ファイルのアップロード時にファイル名が変更されています

ここにファイルをアップロードする私の機能があります。

<?php 

function upload_image() 
{ 
    if (isset($_FILES["user_image"])) 
    { 
     $destination = './upload/' . $_FILES['user_image']['name']; 
     move_uploaded_file($_FILES['user_image']['tmp_name'], $destination); 
     return $_FILES['user_image']['name']; 
    } 
} 

function get_image_name($user_id) 
{ 
    include('db3.php'); 
    $statement = $connection->prepare("SELECT image FROM users10 WHERE id = '$user_id'"); 
    $statement->execute(); 
    $result = $statement->fetchAll(); 
    foreach($result as $row) 
    { 
     return $row["image"]; 
    } 
} 

function get_total_all_records() 
{ 
    include('db3.php'); 
    $statement = $connection->prepare("SELECT * FROM users10"); 
    $statement->execute(); 
    $result = $statement->fetchAll(); 
    return $statement->rowCount(); 
} 

?> 
+1

変更あなたのテーブルの種類は、あなたがまだあなたの関数get_image_nameでSQLインジェクションを持つ – Farkie

+0

をutf8に(フィールドのタイプキーワードについて注意してください)() –

+0

なぜあなたは限り、あなたはあなたのクエリをパラメータ化しませんよう、あなたの声明を準備していますか? – hassan

答えて

0

ダンプバックアップを保存して、テーブル

のためにデータベース

ALTER DATABASE <database_name> CHARACTER SET utf8 COLLATE utf8_unicode_ci; 

についてUTF-8

にデータベース、テーブルとフィールドの文字セットを変更しようとします

ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; 

列は

ALTER TABLE <table_name> MODIFY <column_name> VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci; 
+0

utf8に変更しても何も起こりません。 –

+0

ファイルのエンコーディングをUTF-8に変更し、この行をすべてのコードに使用します。 **ヘッダー( 'Content-type:text/plain; charset = utf-8'); ** –

+0

私は何時間もそれを試みていますが、それでもまだ仕事はありません。結果は同じですが、ファイル名が変更されています –

関連する問題