2009-08-26 9 views
16

Sembra che le costanti di classe coprano solo PDO::PARAM_BOOL, PDO::PARAM_INT e PDO::PARAM_STR per il binding. Leghi solo valori decimali/mobili/doppi come stringhe o c'è un modo migliore di trattarli?Qual è il modo migliore per legare valori decimali/doppi/float con PDO in PHP?

MySQLi consente il tipo 'd' per il doppio, è sorprendente che PDO non abbia un equivalente quando sembra migliore in molti altri modi.

risposta

10

DOP AFAIK :: PARAM_STR è la soluzione.

+0

grazie! probabilmente lo farò e mi convaliderò. – Rob

+3

Per coloro che non lo sapevano, la sintassi è: '$ sth-> bindParam (': keyword', $ keyword, PDO :: PARAM_STR);' – tylerl

-3

Se si desidera veramente utilizzare PDO, è necessario inserirlo come PARAM_INT, ma non utilizzo mai una specifica per double.

È un parametro facoltativo per specificare il tipo PDO.

Immagino che sarebbe meglio non impostare il tipo PDO per double s.

+0

Non credo che mi piacerebbe perdere la precisione legandolo come un INT ma si fa un buon punto solo non specificando il tipo, grazie. – Rob

+11

In realtà, se non viene specificato alcun parametro_TYPE, viene assunto PARAM_STR. – Xeoncross

+0

Non hai e non devi associarlo come numero intero o perderai i dati! Leggi invece la risposta @AlixAxel. – PhoneixS

0

Devi usare PDO :: PARAM_STR, ma per SQLite e altri motori questo può avere comportamenti imprevedibili. Vedere questo problema per un esempio: SQLite HAVING comparison error

Problemi correlati