PDO Erreur:SQLSTATE [22P02]:文本表示无效

时间:2013-07-23 13:35:06

标签: postgresql pdo prepared-statement

的PostgreSQL:

create table t(c real);

PHP PDO:

$sql= 'insert into t (c) values (:c)';
$stmt = $dbh->prepare ( $sql );
$stmt->bindParam ( ':c',-0.06 );
$stmt->execute ();

输出

Erreur : SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer: "-0.06 "

1 个答案:

答案 0 :(得分:0)

...嗯

您不能将-0.06插入整数字段。试试这个:

ALTER TABLE t ALTER COLUMN c TYPE numeric;

然后它应该工作。数字类型对于货币使用是安全的,因为它们无损地转换到/从基数10转换,与浮点不同(我假设这是经济的,因为类型是整数,精度是1/100。