亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用PDO從MySQL獲取數字類型?

如何使用PDO從MySQL獲取數字類型?

手掌心 2019-07-06 17:51:04
如何使用PDO從MySQL獲取數字類型?我使用PDO和MySQL,因為某些原因,當從數據庫中獲得int類型的值時,PDOStatement返回的是數字的字符串表示,而不是數值類型的值。我怎樣才能防止這種情況發生?我注意到PDO類有一個屬性:PDO::ATTR_STRINGIFY_FETCHES這應該是為了解決這個問題,但是當試圖修改它時,它會拋出一個錯誤,說明該屬性對MySQL驅動程序無效。在查詢數據庫時,獲取字符串而不是數字是正常的嗎?
查看完整描述

3 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

我認為在PHP5.2中沒有“數字”:-(

在PHP5.3中,如果我記得正確的話,當您使用新的(新的如PHP>=5.3)MySQLNd (MySQL本機驅動程序)司機。

嗯,在我的書簽上翻閱了更多之后,我找到了這篇關于mysqlnd的文章:PDO_MYSQLND: The new features of PDO_MYSQL in PHP 5.3

它說(引用):

利用mysqlnd進行PDO的優勢

當使用服務器端準備語句時,mysqlnd返回本機數據類型,例如,int列作為整數變量返回,而不是作為字符串返回。這意味著內部數據轉換減少。

但這只是PHP5.3(前提是您的PHP5.3版本是用mysqlnd編譯的)(而不是舊的libmysql)),而且似乎只適用于準備好的陳述:-(

對不起.。

一個解決方案是在php端建立一個映射系統。(就像一個ORM-看學說作為ORM的一個例子:我不知道它是否符合你的要求)要將來自DB的結果轉換為PHP數據類型.

是的,如果你想使用像這樣的運算符,這是很糟糕的。===!==對類型敏感的.


查看完整回答
反對 回復 2019-07-06
?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

首先回答你的最后一個問題,“是的”,不幸的是,接收數字作為字符串是正常的。正如Pascal引用的手冊所述,mysqlnd(PHP5.3)將從準備好的語句中返回本機數據類型,前提是關閉PDO的準備語句模擬。

new PDO($dsn, $user, $pass, array(
    PDO::ATTR_EMULATE_PREPARES => false))

PDO:ATTR_STRINGIFY_FETCH與MySQL無關。

如果你看到好的一面,最好還是使用預先準備好的陳述,所以.;)


查看完整回答
反對 回復 2019-07-06
  • 3 回答
  • 0 關注
  • 646 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號