我正在网上阅读一些内容,很多人都说建议从旧的mysql(和mysqli)扩展中切换到PDO。
我是这个PDO的新手,我从中学到了一些东西。 对于我的问题,我试图搜索stackoverflow,谷歌等,但它没有帮助我。
mysqli的原始脚本:
$data = mysqli_query($con, "SELECT x1, x2, x3, x4 FROM Table1 WHERE x1 = $variable1");
$row = mysqli_fetch_row($data);
$result_data = array(
'data1' => $row[0],
'data2' => $row[1]
);
echo json_encode($result_data);
此代码输出如下内容:
{"data1", 1, "data2", 2}
我尝试使用此PDO代码更改它:
$STH = $DBH->prepare("SELECT x1, x2, x3, x4 FROM Table1 WHERE x1 = ?");
$STH->bindParam(1, $variable1);
$STH->execute();
$row = $STH->fetchAll();
$result_data = array(
'data1' => $row[0],
'data2' => $row[1],
);
echo json_encode($result_data);
这让我感到很奇怪,比如
{"data1", 1, 2, 1, "data2", 1, "data2"}, data1 null, data2 null
它应该像原始的mysqli脚本一样......
我尝试了多种获取模式,比如assoc,num,column,我在互联网上找到了什么,但结果非常相似,我总是得到这个错误:
注意:未定义的偏移量:
中的1
可能是什么问题,如何解决?
答案 0 :(得分:1)
$STH = $DBH->prepare("SELECT x1 data1, x2 data2 FROM Table1 WHERE x1 = ?");
$STH->execute([$variable1]);
echo json_encode($STH->fetchAll(PDO::FETCH_ASSOC));