Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #21465 > unrolled thread
| Started by | NoS <NoS@nospam.no> |
|---|---|
| First post | 2017-03-01 19:36 +0100 |
| Last post | 2017-03-02 11:01 +0100 |
| Articles | 6 — 3 participants |
Back to article view | Back to it.comp.www.php
PDO e virgolette NoS <NoS@nospam.no> - 2017-03-01 19:36 +0100
Re: PDO e virgolette fmassei@gmail.com - 2017-03-01 10:50 -0800
Re: PDO e virgolette NoS <NoS@nospam.no> - 2017-03-01 19:53 +0100
Re: PDO e virgolette fmassei@gmail.com - 2017-03-01 11:08 -0800
Re: PDO e virgolette Alessandro Pellizzari <shuriken@amiran.it> - 2017-03-01 20:47 +0000
Re: PDO e virgolette NoS <NoS@nospam.no> - 2017-03-02 11:01 +0100
| From | NoS <NoS@nospam.no> |
|---|---|
| Date | 2017-03-01 19:36 +0100 |
| Subject | PDO e virgolette |
| Message-ID | <o974c9$167h$1@gioia.aioe.org> |
Salve a tutti,
ho un problema con PDO.
Praticamente le virgolette " inserite in un stringa, che dovrebbe essere
memorizzata nel db, spezzano la stringa stessa.
I dati sono passati in questo modo:
$data = array(
'nome' => $nome,
'cognome' => $cognome,
'nickname' => $nickname
);
$query = 'UPDATE user
SET
firstname = :nome,
familyname = :cognome,
WHERE nickname= :nickname';
$sth = $this->pdo->prepare($query);
$sth->execute($data);
Ho letto in giro, qualcuno suggerisce QUOTE ma il manuale lo sconsiglia
a favore di PREPARE.
Il charset è definito tra i parametri di connessione come:
define('CHARSET', 'utf8');
Ho anche provato a modificarlo in utf8mb4 ma il risultato non cambia.
Come posso risolvere?
Grazie in anticipo
[toc] | [next] | [standalone]
| From | fmassei@gmail.com |
|---|---|
| Date | 2017-03-01 10:50 -0800 |
| Message-ID | <ad82a0ed-06b3-404f-9e66-c5e82615816f@googlegroups.com> |
| In reply to | #21465 |
On Wednesday, March 1, 2017 at 1:37:00 PM UTC-5, NoS wrote: > ... > Come posso risolvere? > A me sembra a posto: hai stringhe "spezzate" nel DB? Hai controllato prima della query (nell'array) e dopo (nella tabella) se è tutto come ti aspetti? Ciao!
[toc] | [prev] | [next] | [standalone]
| From | NoS <NoS@nospam.no> |
|---|---|
| Date | 2017-03-01 19:53 +0100 |
| Message-ID | <o975as$17p7$1@gioia.aioe.org> |
| In reply to | #21468 |
Ciao, guarda stavo per scrivere che in effetti la soluzione è in lettura e non in scrittura. Mi sono accorto che la stringa è memorizzata bene ma in lettura non era trattata. Ora ho risolto mettendo un htmlspecialchars($datoRisultanteDallaSelect); Domanda: trami PDO, c'è un modo per trattare i dati letti direttamente dall'oggetto di PDO? (ora come ora applico htmlspecialchars ai dati mentre li stampo a video, volevo sapere se potevo "pulirli" direttamente da qualche metodo PDO in fase di select). Grazie cmq per la risposta. Il 01/03/2017 19.50, fmassei@gmail.com ha scritto: > On Wednesday, March 1, 2017 at 1:37:00 PM UTC-5, NoS wrote: >> ... >> Come posso risolvere? >> > > A me sembra a posto: hai stringhe "spezzate" nel DB? Hai controllato prima della > query (nell'array) e dopo (nella tabella) se è tutto come ti aspetti? > > Ciao! >
[toc] | [prev] | [next] | [standalone]
| From | fmassei@gmail.com |
|---|---|
| Date | 2017-03-01 11:08 -0800 |
| Message-ID | <70cb0175-d6b3-42fe-9cf4-6d582f96d547@googlegroups.com> |
| In reply to | #21469 |
On Wednesday, March 1, 2017 at 1:53:19 PM UTC-5, NoS wrote: > Ora ho risolto mettendo un htmlspecialchars($datoRisultanteDallaSelect); > > Domanda: trami PDO, c'è un modo per trattare i dati letti direttamente > dall'oggetto di PDO? (ora come ora applico htmlspecialchars ai dati > mentre li stampo a video, volevo sapere se potevo "pulirli" direttamente > da qualche metodo PDO in fase di select). > Non mi pare, anche perché non è il lavoro di PDO :) Puoi fare varie altre cose che magari ti "puliscono" un po' il codice, tipo la fetch in una classe (e poi usare dei metodi appositi della classe stessa) o magari una semplice array_map. Io personalmente non faccio nulla: nelle View, se ho bisogno di stampare una stringa, scrivo esplicitamente htmlspecialchars (e/o simili) perché lo trovo più chiaro da leggere. YMMV. Ciao!
[toc] | [prev] | [next] | [standalone]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2017-03-01 20:47 +0000 |
| Message-ID | <ehoqb6Fnop8U1@mid.individual.net> |
| In reply to | #21465 |
On 01/03/17 18:36, NoS wrote:
> Il charset è definito tra i parametri di connessione come:
> define('CHARSET', 'utf8');
Questo definisce una costante generica, non passa parametri al DB.
Sei sicuro che poi questa costante venga usata?
Bye.
[toc] | [prev] | [next] | [standalone]
| From | NoS <NoS@nospam.no> |
|---|---|
| Date | 2017-03-02 11:01 +0100 |
| Message-ID | <o98qh4$1r1j$1@gioia.aioe.org> |
| In reply to | #21472 |
Hai ragione, ho messo la definizione della variabile ma per la fretta ho
dimenticato il resto la funzione di connessione....
Questo è il codice completo che credo sia corretto.
define('HOST', $db_host); // Database host name eg. localhost
define('USER', $db_user); // Database user. eg. root ( if your on local
server)
define('PASSWORD', $db_password); // Database user password (if
password is not set for your root user then keep it empty )
define('DATABASE', $db_name); // Database name
define('CHARSET', 'utf8');
function DB()
{
try {
static $instance;
if ($instance === null) {
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => FALSE,
);
$dsn = 'mysql:host=' . HOST . ';dbname=' . DATABASE .
';charset=' . CHARSET;
$instance = new PDO($dsn, USER, PASSWORD, $opt);
}
return $instance;
} catch (PDOException $e) {
return "Error!: " . $e->getMessage();
}
}
Il 01/03/2017 21.47, Alessandro Pellizzari ha scritto:
> On 01/03/17 18:36, NoS wrote:
>
>> Il charset è definito tra i parametri di connessione come:
>> define('CHARSET', 'utf8');
>
> Questo definisce una costante generica, non passa parametri al DB.
>
> Sei sicuro che poi questa costante venga usata?
>
> Bye.
>
>
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.www.php
csiph-web