- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Testo tra apici in tabelle mysql
-
Indirizzo è dichiarato con la lettera maiuscola. E poi tutti gli altri record, in cui il campo indirizzo non conteneva apici, me li ha scitti correttamente.
-
Scusa avevo capito tuttaltro nel testo e ho scritto una scemenza.
Hai già provato a fare un escape dei dati prima di inserirli nel db? Oppure usare opportunamente stripslashes() e addslashes() quando prelevi o inserisci nel database.
-
E' altamente consigliato usare una libreria per "parlare" con il tuo DB, e nello specifico sarebbe meglio usare MDB2: eviti un sacco di problemi e scrivi del codice più portabile ed efficiente
-
Perdona l'ignoranza, ma cosa è MDB2 e a cosa mi serve?
-
Hai cliccato sul link? MDB2 è una libreria per gestire l'accesso e l'interrogazione di un database tramite PHP e ha notevoli vantaggi rispetto all'utilizzo delle funzioni "native" mysql_xxx che tu utilizzi
-
Non sono molto ferrata con l'inglese e non sono riuscita a capire come funziona. Potresti riassumermelo in 2 parole?
E poi: devo istallarmo sul server dove si trova il db o posso istalllarlo anche sul mio pc?
-
Uhm, in realtà non è facile riassumerlo in breve - si tratta di una libreria che fornisce una API comune per dialogare con tutti i principali DB supportati da PHP (MySQL, PostgreSQL, MSSQL, ...). In sostanza invece di usare
[php]mysql_query[/php]o
[php]pg_query[/php]esegui sempre e solo
[php]$db->query[/php]senza preoccuparti di quale database stai utilizzando (ovviamente a patto di usare SQL standard)Ulteriori vantaggi dell'utilizzo di questa libreria (Object-Oriented quindi piuttosto facile da usare) sono:
- utilizzo dei placeholder (con escaping "automatico"): questo è quello che serve a te in questo caso
- gestione automatica dell'autoincrement (per DB che non lo supportano "nativamente")
- supporto per transactions
Comunque il vantaggio principale è l'astrazione dal DB sottostante. Pensa se un giorno invece di usare MySQL dovessi usare MSSQL: se non astrai dovrai cambiare tutto il codice che hai scritto, se usi questa libreria probabilmente non dovrai cambiare neanche una riga.
Comunque, detto ciò, se proprio vuoi continuare ad usare la funzione mysql_query, il mio suggerimento è di fare la tua query così:
[php]$query1 = "INSERT INTOagenzie
(ragsoc
,indirizzo
, ...)
VALUES
('" . mysql_real_escape_string($dati[ragsoc]) . "', '" . mysql_real_escape_string($dati[Indirizzo]) . "', ... "[/php]HTH, ciao!
-
Credo che momentaneamente userò la seoconda ipotesi, ovvero usare il mysql_real_escape_string.
Per il MDB2 prima voglio capire alcune cose.
Grazie comunque della pazienza.
-
Quando il testo di un campo è contenuto tra gli apici, ho qualche difficoltà a gestirlo sul form.
Mi spiego meglio.
Il campo Ragione_sociale della mia tabella Agenzie è il seguente:
Agriturismo "Della Valle";ora io vado a prelevarlo dal mio database nel seguente modo
[php]
$query = "SELECT * FROMagenzie
WHEREid
= "$_GET[id]" ";
$result = mysql_query($query,$db);
if(!$result) {
echo "$query<br><br>";
echo mysql_error($db); echo "<br>";
die($err_query_fallita);
}
$dati = mysql_fetch_array($result);$Ragione_sociale = $dati['Ragione_sociale'];
[/php]Se lo visualizzo con un echo, mi viene visualizzato in modo corretto. Ma quando lo vado a visualizzare all'interno di una casella testo di un form, il testo viene troncato.
Questo il codice del form[php]
<input name="'Ragione_sociale'" type="text" id="'Ragione_sociale'" value="<?php echo $'Ragione_sociale'?>" size="30" maxlength="100" />
[/php]Praticamente sul form mi viene visualizzato solo Agriturismo e manca il testo tra apici.
Come posso risolvere il problema?
-
Ciao,
dovresti fare cosi:
[php]
<input name="'Ragione_sociale'" type="text" id="'Ragione_sociale'" value="<?php echo $Ragione_sociale?>" size="30" maxlength="100" />
[/php]
-
Scusa, ho sbagliato io a scrivere. L'avevo scritta esattamente come hai detto tu ed il problema si propone lo stesso.
-
Prova così:
[php]<input name="'Ragione_sociale'" type="text" id="'Ragione_sociale'" value="<?php echo htmlspecialchars($Ragione_sociale) ?>" size="30" maxlength="100" />[/php]http://php.net/htmlspecialchars
-
Ottimo, così funziona.
Grazie