我正在将一些现有代码从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”}]
答案 0 :(得分:-1)
不,你不能。 PDO没有提供转换结果的方法。
所以如果你需要字符串,你需要自己strval
。