web-dev-qa-db-fra.com

Échapper à une chaîne avec des guillemets dans Laravel

J'aimerais insérer le contenu d'un fichier Excel dans ma base de données.

J'utilise simplement une requête brute pour y parvenir.


La fonction contrôleur

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');
}



Mon problème: Il y a des noms dans le fichier Excel comme Mc'Neal, alors je reçois un message d'erreur.
Comment puis-je échapper à l'apostrophe de Laravel?

Je suis vraiment nouveau à Laravel et je serais heureux de vous aider!

6
Schwesi
8
Sherif

Pour échapper des chaînes avec des guillemets simples pour MS SQL, nous aurions besoin de l'échapper en ajoutant un autre guillemet simple.  

La fonction suivante fait cela. Donc, vous pouvez essayer d’utiliser cette fonction:

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"
2
Rahul Gupta