2016-08-31 28 views
3

私のデータベースにExcelファイルの内容を挿入したいと思います。

これを達成するために単純に生のクエリを使用します。

Laravelで引用符付きの文字列をエスケープする


コントローラ機能

public function uploadExcel() 
{ 
    $filename = Input::file('import_file')->getRealPath(); 

    $file = fopen($filename, "r"); 

    $count = 0; 
    while (($emapData = fgetcsv($file, 10000, "\t")) !== FALSE) { 
     $count++; 

     if($count>1) { 
      DB::statement("INSERT INTO `members` (
       member_title, 
       member_first_name, 
       member_name_affix, 
       member_last_name, 
       member_private_address, 
       member_private_zip_code, 
       member_private_location, 
       member_private_phone, 
       member_private_mobile, 
       member_private_fax, 
       member_private_mail, 
       member_business_position, 
       member_business_name, 
       member_business_address, 
       member_business_zip_code, 
       member_business_location, 
       member_business_area_code, 
       member_business_phone, 
       member_business_fax, 
       member_business_mobile, 
       member_business_mail, 
       member_join_date, 
       extra 
      ) VALUES (
       '$emapData[0]', 
       '$emapData[1]', 
       '$emapData[2]', 
       '$emapData[3]', 
       '$emapData[4]', 
       '$emapData[5]', 
       '$emapData[6]', 
       '$emapData[7]', 
       '$emapData[8]', 
       '$emapData[9]', 
       '$emapData[10]', 
       '$emapData[11]', 
       '$emapData[12]', 
       '$emapData[13]', 
       '$emapData[14]', 
       '$emapData[15]', 
       '$emapData[16]', 
       '$emapData[17]', 
       '$emapData[18]', 
       '$emapData[19]', 
       '$emapData[20]', 
       '$emapData[21]', 
       '$emapData[22]' 
      )"); 
     } 
    } 
    return redirect('index.index'); 
} 



私の問題: Excelで名前がMc'Nealようなファイルがありますので、私はエラーメッセージが表示されます。
laravelでアポストロフィをエスケープするにはどうすればよいですか?

私は本当にlaravelに新しいですし、どんな助けでも喜んでいただけます!

+0

なぜあなたは 'member'モデルを作成してsave()しませんか? –

答えて

4

あなたはaddslashes()を試しましたか?

http://php.net/manual/en/function.addslashes.php

+0

いいえ!ありがとうございました!!しかし、私はその関数に文字列を渡す必要があり、$ emapDataは配列です。 – Schwesi

+0

私はこの回答を7分で受け入れます!ご協力ありがとうございました!! – Schwesi

+1

'array_map(" escapeFunction "、$ emapData)' ... http://php.net/manual/en/function.array-map.php – Sherif

1

MS SQLのための単一引用符付き文字列をエスケープするために、我々は別の単一引用符を追加することによって、それをエスケープする必要があります。

以下の関数がこれを行います。だから、あなたはこの関数を使って試してみてください:

public static function mssql_escape($unsafe_str) 
{ 
    if (get_magic_quotes_gpc()) 
    { 
     $unsafe_str = stripslashes($unsafe_str); 
    } 
    return $escaped_str = str_replace("'", "''", $unsafe_str); 
} 
//for example $unsafe = "AB'CD'EF"; 
$escaped = mssql_escape($unsafe); 
echo $escaped;// Would output the escaped string as "AB''CD''EF" 
関連する問題