Questa è una domanda molto vecchia, ma c'è un altro modo per farlo che può essere o meno sicuro, a seconda della prospettiva. Richiede MySQL 5.6 o successivo a causa dell'uso di una specifica funzione di stringa: FROM_BASE64
.
Diciamo che dispone di questo messaggio che vuoi inserire:....
"Ah," Nick Quasi Senza Testa agitò una mano elegante, "una questione di nessuna importanza non è come se io veramente volevo unirmi ... Pensavo che avrei applicato, ma apparentemente non ho soddisfatto i requisiti - "
Quella citazione ha un sacco di virgolette singole e doppie e sarebbe un vero dolore inserire in MySQL. Se lo stai inserendo da un programma, è facile sfuggire alle virgolette, ecc. Ma, se devi metterlo in uno script SQL, dovrai modificare il testo (per sfuggire alle virgolette) che potrebbe essere soggetto a errori o sensibile al word-wrapping, ecc.
Invece, è possibile base64 codificare il testo, in modo da avere una stringa "pulita":
SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn VkSE1uSUMwaUlBPT0K
Alcune note sulla Base64 codifica:
- Base64 codifica è un codifica binaria, quindi è meglio assicurarsi di avere il proprio set di caratteri corretto quando si esegue la codifica, perché MySQL decodificherà la stringa codificata in base64 in byte e quindi li interpreterà. Assicurati che
base64
e MySQL concordino su quale sia la codifica dei caratteri (ti consiglio UTF-8).
- Ho avvolto la stringa in 50 colonne per la leggibilità su SO. Puoi avvolgerlo su un numero qualsiasi di colonne che vuoi (o non avvolgere affatto) e funzionerà comunque.
Ora, per caricare questo in MySQL:
INSERT INTO my_table (text) VALUES (FROM_BASE64(' SWtGb0xDSWdUbVZoY214NUlFaGxZV1JzWlhOeklFNXBZMnNnZD JGMlpXUWdZVzRnWld4bFoyRnVkQ0JvWVc1a0xDQWlZU0J0WVhS MFpYCklnYjJZZ2JtOGdhVzF3YjNKMFlXNWpaUzRnTGlBdUlDNG dTWFFuY3lCdWIzUWdZWE1nZEdodmRXZG9JRWtnY21WaGJHeDVJ SGRoYm5SbApaQ0IwYnlCcWIybHVMaUF1SUM0Z0xpQlVhRzkxWj JoMElFa25aQ0JoY0hCc2VTd2dZblYwSUdGd2NHRnlaVzUwYkhr Z1NTQW5aRzl1SjMKUWdablZzWm1sc2JDQnlaWEYxYVhKbGJXVn VkSE1uSUMwaUlBPT0K '));
Questo inserirà senza alcuna lamentela, e non c'era bisogno di manualmente sfuggire a qualsiasi testo all'interno della stringa.
fonte
2017-02-16 20:18:33
Potresti voler aggiornare il tuo post per includere mysql_real_escape_string() o addslashes() come possibili soluzioni ... come in uno dei commenti seguenti, l'OP afferma che stanno solo leggendo dal file e inserendo. –
I metodi mysql_ * non sono raccomandati per un uso futuro, in quanto è [deprecato] (https://wiki.php.net/rfc/mysql_deprecation). – hd1
Questa è la risposta giusta, anche se in questi giorni l'opzione migliore è usare uno degli – Ryan