我有一个只有1列“c_name”的mysql表。
当我回显这个表的行(json_encoded)时,它给了我这个 -
[{"0":"Apparel, Textiles & Accessories","c_name":"Apparel, Textiles & Accessories"},{"0":"Auto & Transportation","c_name":"Auto & Transportation"},{"0":"Electronics","c_name":"Electronics"},{"0":"Machinery, Industrial Parts & Tools","c_name":"Machinery, Industrial Parts & Tools"},{"0":"Gifts, Sports & Toys","c_name":"Gifts, Sports & Toys"}]
为什么每一行都会出现0? 我不想要它。
这是我的代码 -
$sql="SELECT * FROM categories";
$r=mysqli_query($con,$sql);
$rows = array();
if ($result=mysqli_query($con,$sql))
{
// Fetch one and one row
while($row = mysqli_fetch_array($r))
{
$rows[] = $row;
}
echo json_encode($rows);
//Free result set
mysqli_free_result($result);
}
else
{
echo "Umm... Some internal error.";
}
任何帮助?
谢谢,
答案 0 :(得分:1)
由于您使用SQL对象的->fetch()
方法。此方法返回两个值(FETCH_ROW和FETCH_ASSOC)。尝试在json_encode之前print_r()你的变量,你会看到这个。
或者将您的代码从SQL查询提供给json_encode。
使用mysqli_fetch_array
或mysqli_fetch_row
重新填充mysqli_fetch_assoc
。
while($row = mysqli_fetch_row($r))
{
$rows[] = $row;
}
echo json_encode($rows);
答案 1 :(得分:0)
将 mysqli_fetch_array()的第二个参数设置为 MYSQLI_ASSOC :
// Fetch one and one row
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC))
{
$rows[] = $row;
}
默认为 MYSQLI_BOTH ,它返回数字索引和命名索引。