准备好的语句和浮点数

Posted

技术标签:

【中文标题】准备好的语句和浮点数【英文标题】:Prepared statements and floats 【发布时间】:2014-02-19 13:52:49 【问题描述】:

我正在玩我自己的Google maps 实现,我想通过准备好的语句和 mysqli 对象(不是链接示例中所述的 mysql)正确地完成它另外,我添加了“自己的注册”,所以我害怕SQL 注入。但是,如何将 Float 值绑定到准备好的语句?

我的表有(除其他外)FLOAT 类型列:

CREATE TABLE `markers` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 60 ) NOT NULL ,
`description` TEXT NOT NULL ,
`lat` FLOAT( 10, 6 ) NOT NULL ,
`lng` FLOAT( 10, 6 ) NOT NULL ,  
) ENGINE = MYISAM ;

但是阅读manual我只能看到这些类型:

Character   Description
i   corresponding variable has type integer
d   corresponding variable has type double
s   corresponding variable has type string
b   corresponding variable is a blob and will be sent in packets

我是否应该假设当列是 FLOAT 时,我应该使用 b 作为 blob? (因为它不是字符串,也不是双精度值)。 TEXT 类型列也一样?

【问题讨论】:

在这种情况下是字符串文本吗? php 中,double 只是 float 的另一个名称。 php.net/manual/en/language.types.float.php 在 C 级别它们都存储为 double,类型的实际大小取决于平台。 好的,所以我应该假设使用 blob 是为了……好吧,blob? :) 让我的生活更轻松 :) 您是否尝试将数据库中的 lat、lng 的列类型更改为 DOUBLE?带有“d”的准备好的语句对我来说非常适合 我没有,但是将准备好的语句更改为“d”解决了问题 【参考方案1】:

对非整数只使用“d”

【讨论】:

以上是关于准备好的语句和浮点数的主要内容,如果未能解决你的问题,请参考以下文章

定点数和浮点数

整数和浮点数

浮点数怎么表示精确度?

嵌入式DSP开发的定点数和浮点数

Python中整数和浮点数

Python中整数和浮点数