如何获取数组而不是json对象?
问题描述:
<?php
$link = mysql_connect('localhost', 'root', 'admin')
or die('There was a problem connecting to the database.');
mysql_select_db('hospitalmaster');
$hnum = (int)$_POST["hnum"];
$sql = "SELECT d.doctorid, d.doctorname
from hospitalmaster.doctor_master d
inner join pharmacymaster.pharbill e
where e.hnum = '$hnum'
and e.presid = d.d_empno
group by e.presid";
$result = mysql_query($sql);
$response = array();
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$response = $row;
}
echo json_encode(array("Doctor"=>$response));
} else {
echo ("no DATA");
}
?>
我上面所示的API,但作为JSON对象不是JSON数组此API返回我吗?我想知道如何获得dotorid的doctorname作为一个阵列,因为我有很多的医生姓名和身份证,我想每名医生及其相应的ID作为idividual阵列,现在他们正在返回它们作为单个对象。由于这是我第一次编写api,我不知道如何修改代码。如何获取数组而不是json对象?
答
你每轮循环在写阵列。
while ($row = mysql_fetch_assoc($result)) {
$response[] = $row;
//change ^^
}
您应该使用
mysqli_
或PDO。下面是mysqli_
<?php
$link = mysqli_connect('localhost', 'root', 'admin','hospitalmaster')
or die('There was a problem connecting to the database.');
$sql = "SELECT d.doctorid, d.doctorname
from hospitalmaster.doctor_master d
inner join pharmacymaster.pharbill e
where e.hnum = ?
and e.presid = d.d_empno
group by e.presid";
$stmt = $link->prepare($sql);
$stmt->bind_param('i', (int)$_POST["hnum"]);
$stmt->execute();
if ($stmt->num_rows() > 0) {
$result = $stmt->get_result();
$response = array();
while ($row = $result->fetch_assoc()) {
$response[] = $row;
}
echo json_encode(array("Doctor"=>$response));
} else {
echo ("no DATA");
}
?>
+0
三江源您宝贵的代码......感激....再次三江源@RiggsFolly – nithinsampath
每当你使用一个建议[了'mysql_'(http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in -php) 新代码中的数据库扩展 ** [发生这种情况](https://media.giphy.com/media/kg9t6wEQKV7u8/giphy.gif)** 它被弃用并且已经使用了多年,曾经在PHP7中。 如果你刚开始学习PHP,花你的精力学习'PDO'或'mysqli'数据库扩展和准备的语句。 [从这里开始](http://php.net/manual/en/book.pdo.php) – RiggsFolly
添加到上面的评论,你可以通过'json_decode JSON对象转换为数组($ yourjsonobjectvariable,真);' –
谢谢对于有价值的信息,我这样做的一个项目,因此本质时间....所以有一些参考我了解到这种方式......因此我需要知道如何修改代码... – nithinsampath