如何使用PDO将列值作为字符串文字?

时间:2017-02-11 04:35:14

标签: php mysql mysqli pdo

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

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

$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“: ”立体模型“, ”付费“:1, ”DatePaid“:” 09-FEB-17   上午11:28 “ ”dateCreated会“:” 03月17   下午1点11分“‘DateLastUpdated’:” 09月17   上午11时28分 “ ”LastUpdatedBy“: ”wf_boxoffice“},{ ”ID“:56, ”Entry_Form_Number“:1006, ”Barcode_Text“: ”二○一七年至1006年“, ”Entrant_Name“:” AA   BB “ ”MODEL_NAME“: ”CC“, ”CATEGORY_NAME“: ”立体模型“, ”付费“:1, ”DatePaid“:” 09-FEB-17   上午11:28 “ ”dateCreated会“:” 03月17   下午1点16分“‘DateLastUpdated’:” 09月17   上午11时28分 “ ”LastUpdatedBy“: ”wf_boxoffice“},{ ”ID“:59, ”Entry_Form_Number“:1009, ”Barcode_Text“: ”二〇一七年至1009年“, ”Entrant_Name“:” AA   BB “ ”MODEL_NAME“: ”CC“, ”CATEGORY_NAME“:” 原始   造型/ Scratchbuilt “ ”付费“:1, ”DatePaid“:” 09-FEB-17   上午11:28 “ ”dateCreated会“:” 04月17   10:32 “ ”DateLastUpdated“:” 09月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“: ”立体模型“, ”付费“:1, ”DatePaid“:” 09-FEB-17   上午11:28 “ ”dateCreated会“:” 08月17   下午8时31分“‘DateLastUpdated’:” 09月17   上午11时28分 “ ”LastUpdatedBy“: ”wf_boxoffice“},{ ”ID“:63, ”Entry_Form_Number“:1011, ”Barcode_Text“: ”二○一七年至1011年“, ”Entrant_Name“:” AA   BB “ ”MODEL_NAME“: ”CC“, ”CATEGORY_NAME“: ”恐龙“, ”付费“:0 ”DatePaid“:NULL, ”dateCreated会“:” 09-FEB-17   下午8时12分“‘DateLastUpdated’:” 09月17   下午8时12分 “ ”LastUpdatedBy“: ”wf_anon“},{ ”ID“:64, ”Entry_Form_Number“:1012, ”Barcode_Text“: ”2017年至1012年“, ”Entrant_Name“:” AA   BB “ ”MODEL_NAME“: ”CC“, ”CATEGORY_NAME“:” 恐怖   图 “ ”付费“:0 ”DatePaid“:NULL, ”dateCreated会“:” 10-FEB-17   上午07时55分“‘DateLastUpdated’:” 2月10日 - 17   上午07时55分”, “LastUpdatedBy”: “wf_anon”}]

的mysqli

  

[{ “ID”: “55”, “Entry_Form_Number”: “1005”, “Barcode_Text”: “2017年至1005年”, “Entrant_Name”:“AA   BB “ ”MODEL_NAME“: ”CC“, ”CATEGORY_NAME“: ”立体模型“, ”付费“: ”1“, ”DatePaid“:” 09-FEB-17   上午11:28 “ ”dateCreated会“:” 03月17   下午1点11分“‘DateLastUpdated’:” 09月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“: ”立体模型“, ”付费“: ”1“, ”DatePaid“:” 09-FEB-17   上午11:28 “ ”dateCreated会“:” 03月17   下午1点16分“‘DateLastUpdated’:” 09月17   上午11时28分 “ ”LastUpdatedBy“: ”wf_boxoffice“},{ ”ID“: ”59“, ”Entry_Form_Number“: ”1009“, ”Barcode_Text“: ”二零一七年至1009年“, ”Entrant_Name“:” AA   BB “ ”MODEL_NAME“: ”CC“, ”CATEGORY_NAME“:” 原始   造型/ Scratchbuilt “ ”付费“: ”1“, ”DatePaid“:” 09-FEB-17   上午11:28 “ ”dateCreated会“:” 04月17   10:32 “ ”DateLastUpdated“:” 09月17   上午11时28分 “ ”LastUpdatedBy“: ”wf_boxoffice“},{ ”ID“: ”62“, ”Entry_Form_Number“: ”1010“, ”Barcode_Text“: ”1017至10年“, ”Entrant_Name“:” AA   BB “ ”MODEL_NAME“: ”CC“, ”CATEGORY_NAME“: ”立体模型“, ”付费“: ”1“, ”DatePaid“:” 09-FEB-17   上午11:28 “ ”dateCreated会“:” 08月17   下午8时31分“‘DateLastUpdated’:” 09月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“:”恐龙“,”付费“:”0“,”DatePaid“:null,”DateCreated“:”09-Feb-17 08:12 PM“,”DateLastUpdated “:” 09月17   下午8时12分 “ ”LastUpdatedBy“: ”wf_anon“},{ ”ID“: ”64“, ”Entry_Form_Number“: ”1012“, ”Barcode_Text“: ”2017年至1012年“, ”Entrant_Name“:” AA   BB “ ”MODEL_NAME“: ”CC“, ”CATEGORY_NAME“:” 恐怖   图 “ ”付费“: ”0“, ”DatePaid“:NULL, ”dateCreated会“:” 10-FEB-17   上午07时55分“‘DateLastUpdated’:” 2月10日 - 17   上午07时55分”, “LastUpdatedBy”: “wf_anon”}]

1 个答案:

答案 0 :(得分:-1)

不,你不能。 PDO没有提供转换结果的方法。

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