【问题标题】:How to get column values as string literals with PDO? [duplicate]如何使用 PDO 将列值作为字符串文字获取? [复制]
【发布时间】:2017-02-11 04:35:13
【问题描述】:

我正在将一些现有代码从 mysqli 转换为 PDO,以使用准备好的语句/绑定变量来帮助防止查询中的 SQL 注入,但我在获取结果和使用 json 作为 JavaScript 的输入时遇到了问题。

执行查询后,我使用此代码构建结果数组:

$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()) {
    $json[] = $row;
}
echo json_encode($json);

问题在于,似乎我的任何不是字符串的数据库列都在没有双引号的情况下返回,这与我使用 mysqli 时不同,后者将所有值都用双引号括起来。我该如何解决?有没有办法将所有值都作为字符串获取结果?

这是结果的比较 - 请注意,“ID”是我的自动编号列,在 PDO 结果中它没有用双引号括起来:

PDO

[{"ID":55,"Entry_Form_Number":1005,"Barcode_Text":"2017-1005","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"Dioramas","Paid":1,"DatePaid":"09-Feb-17 上午 11:28","创建日期":"17 年 2 月 3 日 01:11PM","DateLastUpdated":"09-Feb-17 11:28AM","LastUpdatedBy":"wf_boxoffice"},{"ID":56,"Entry_Form_Number":1006,"Barcode_Text":"2017-1006","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"Dioramas","Paid":1,"DatePaid":"09-Feb-17 上午 11:28","创建日期":"17 年 2 月 3 日 01:16PM","DateLastUpdated":"09-Feb-17 上午 11:28","LastUpdatedBy":"wf_boxoffice"},{"ID":59,"Entry_Form_Number":1009,"Barcode_Text":"2017-1009","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"原始 Sculpt/Scratchbuilt","Paid":1,"DatePaid":"09-Feb-17 上午 11:28","创建日期":"17 年 2 月 4 日 上午 10:32","DateLastUpdated":"09-Feb-17 上午 11:28","LastUpdatedBy":"wf_boxoffice"},{"ID":62,"Entry_Form_Number":1010,"Barcode_Text":"2017-1010","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"Dioramas","Paid":1,"DatePaid":"09-Feb-17 上午 11:28","创建日期":"17 年 2 月 8 日 08:31PM","DateLastUpdated":"09-Feb-17 上午 11:28","LastUpdatedBy":"wf_boxoffice"},{"ID":63,"Entry_Form_Number":1011,"Barcode_Text":"2017-1011","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"Dinosaurs","Paid":0,"DatePaid":null,"DateCreated":"09-Feb-17 08:12PM","DateLastUpdated":"09-Feb-17 08:12PM","LastUpdatedBy":"wf_anon"},{"ID":64,"Entry_Form_Number":1012,"Barcode_Text":"2017-1012","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"恐怖 数字","Paid":0,"DatePaid":null,"DateCreated":"10-Feb-17 07:55AM","DateLastUpdated":"10-Feb-17 07:55AM","LastUpdatedBy":"wf_anon"}]

MYSQLI

[{"ID":"55","Entry_Form_Number":"1005","Barcode_Text":"2017-1005","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"Dioramas","Paid":"1","DatePaid":"09-Feb-17 上午 11:28","创建日期":"17 年 2 月 3 日 01:11PM","DateLastUpdated":"09-Feb-17 上午 11:28","LastUpdatedBy":"wf_boxoffice"},{"ID":"56","Entry_Form_Number":"1006","Barcode_Text":"2017-1006","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"Dioramas","Paid":"1","DatePaid":"09-Feb-17 上午 11:28","创建日期":"17 年 2 月 3 日 01:16PM","DateLastUpdated":"09-Feb-17 上午 11:28","LastUpdatedBy":"wf_boxoffice"},{"ID":"59","Entry_Form_Number":"1009","Barcode_Text":"2017-1009","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"原始 Sculpt/Scratchbuilt","Paid":"1","DatePaid":"09-Feb-17 上午 11:28","创建日期":"17 年 2 月 4 日 上午 10:32","DateLastUpdated":"09-Feb-17 上午 11:28","LastUpdatedBy":"wf_boxoffice"},{"ID":"62","Entry_Form_Number":"1010","Barcode_Text":"2017-1010","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"Dioramas","Paid":"1","DatePaid":"09-Feb-17 上午 11:28","创建日期":"17 年 2 月 8 日 08:31PM","DateLastUpdated":"09-Feb-17 上午 11:28","LastUpdatedBy":"wf_boxoffice"},{"ID":"63","Entry_Form_Number":"1011","Barcode_Text":"2017-1011","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"Dinosaurs","Paid":"0","DatePaid":null,"DateCreated":"09-Feb-17 08:12PM","DateLastUpdated ":"09-Feb-17 08:12PM","LastUpdatedBy":"wf_anon"},{"ID":"64","Entry_Form_Number":"1012","Barcode_Text":"2017-1012","Entrant_Name":"aa bb","Model_Name":"cc","Category_Name":"恐怖 数字","Paid":"0","DatePaid":null,"DateCreated":"10-Feb-17 07:55AM","DateLastUpdated":"10-Feb-17 07:55AM","LastUpdatedBy":"wf_anon"}]

【问题讨论】:

标签: php mysql mysqli pdo


【解决方案1】:

不,你不能。 PDO 不提供这种方法来转换结果。

所以如果你需要字符串,你需要自己做strval

【讨论】:

  • 我会在 SQL 中还是在结果中这样做?
  • 在所有数字列的sql查询中使用CONVERT(col_name,char)解决了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
  • 1970-01-01
  • 2020-03-15
  • 2010-10-06
  • 1970-01-01
  • 2019-05-16
  • 1970-01-01
相关资源
最近更新 更多