php - 将数据从 MySQL 提取到 JSONArray(使用 PDO!)

标签 php mysql json pdo

我在网上读到一些东西,很多人说建议从旧的 mysql(和 mysqli)扩展切换到 PDO。

我是这个 PDO 的新手,我学到了一些东西。 对于我的问题,我尝试搜索 stackoverflow、Google 等,但没有帮助我。

使用 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,这是我在互联网上找到的,但结果非常相似,而且我总是收到此错误:

Notice:Undefined offset: 1 in

可能是什么问题,如何解决?

最佳答案

 $STH = $DBH->prepare("SELECT x1 data1, x2 data2 FROM Table1 WHERE x1 = ?");
 $STH->execute([$variable1]);
 echo json_encode($STH->fetchAll(PDO::FETCH_ASSOC));

关于php - 将数据从 MySQL 提取到 JSONArray(使用 PDO!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22617580/

相关文章:

php - 处理 innoDB 死锁

mysql - 如何区分日期时间?

ruby-on-rails - AWS Cloudsearch 上传文档

php - 如何在 PHP 类中使用 sql 查询解析 json 数据?

json - 在 Go 中将 JSON 解码为自定义格式

PHP if-else 总是在 mysql_num_rows 等于 1 之后显示 else

javascript - PHP、AJAX、JQuery 获取返回值

php - MySQL 替换 sum(if(xxx,1,0))

php - 使用 AJAX 和 PHP 上传文件出现未知错误(BIF jQuery 插件)

php - 使用 PHP 将 CSV 上传到 MYSQL