【发布时间】:2017-09-19 00:14:01
【问题描述】:
我试图从 mysql 数据库中检索数据并通过 json 传递它,该 url 将具有某些参数来显示特定数据。该链接有效,它带回了数据,但它没有带回我需要的东西。
“api.php?cat_id=1”的 PHP 代码
if(isset($_GET['cat_id']))
{
$post_order_by=API_CAT_POST_ORDER_BY;
$cat_id=$_GET['cat_id'];
$jsonObj= array();
$query="SELECT * FROM tbl_wallpaper
LEFT JOIN tbl_category ON tbl_wallpaper.cat_id= tbl_category.cid
where tbl_wallpaper.cat_id='".$cat_id."' ORDER BY tbl_wallpaper.id ".$post_order_by."";
$sql = mysqli_query($mysqli,$query)or die(mysqli_error());
while($data = mysqli_fetch_assoc($sql))
{
$row['id'] = $data['id'];
$row['cat_id'] = $data['cat_id'];
$row['scat_name'] = $data['scat_name'];
$row['wallpaper_image'] = $file_path.'categories/'.$data['cat_id'].'/'.$data['image'];
$row['wallpaper_image_thumb'] = $file_path.'categories/'.$data['cat_id'].'/thumbs/'.$data['image'];
$row['total_views'] = $data['total_views'];
$row['cid'] = $data['cid'];
$row['category_name'] = $data['category_name'];
$row['category_image'] = $file_path.'images/'.$data['category_image'];
$row['category_image_thumb'] = $file_path.'images/thumbs/'.$data['category_image'];
array_push($jsonObj,$row);
}
$set['HD_WALLPAPER'] = $jsonObj;
header( 'Content-Type: application/json; charset=utf-8' );
echo $val= str_replace('\\/', '/', json_encode($set,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
die();
}
“api.php?scat_name=9&cat_id=1”的 PHP 代码我想要这个过滤结果,只显示数据共享 scat_name 和 cat_id
if(isset($_GET['scat_name'], $_GET['cat_id']))
{
$post_order_by=API_CAT_POST_ORDER_BY;
$scat_id=$_GET['scat_name'];
$cat_id=$_GET['cat_id'];
$jsonObj= array();
$query="SELECT * FROM tbl_wallpaper
LEFT JOIN tbl_scategory ON tbl_wallpaper.scat_name = tbl_scategory.scid
where tbl_wallpaper.scat_name='".$scat_id."' ORDER BY tbl_wallpaper.id ".$post_order_by."";
$sql = mysqli_query($mysqli,$query)or die(mysqli_error());
while($data = mysqli_fetch_assoc($sql))
{
$row['id'] = $data['id'];
$row['cat_id'] = $data['cat_id'];
$row['scat_name'] = $data['scat_name'];
$row['wallpaper_image'] = $file_path.'categories/'.$data['cat_id'].'/'.$data['image'];
$row['wallpaper_image_thumb'] = $file_path.'categories/'.$data['cat_id'].'/thumbs/'.$data['image'];
$row['total_views'] = $data['total_views'];
$row['cid'] = $data['cid'];
$row['category_name'] = $data['category_name'];
$row['category_image'] = $file_path.'images/'.$data['category_image'];
$row['category_image_thumb'] = $file_path.'images/thumbs/'.$data['category_image'];
array_push($jsonObj,$row);
}
$set['HD_WALLPAPER'] = $jsonObj;
header( 'Content-Type: application/json; charset=utf-8' );
echo $val= str_replace('\\/', '/', json_encode($set,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
die();
}
当我调用 url 时,我把它写成例如“api.php?scat_name=9&cat_id=1”,它给我的结果仅基于 cat_id,即使我在 scat_name= 中放入了任何不存在的东西工作并根据 cat_id 带回结果。我在浏览器上得到的结果是这样的:注意 scat_name 9 和 0 意味着不依赖于那个带来的数据库,而只依赖于 cat_id 哪个 1。
{
"id": "241",
"cat_id": "1",
"scat_name": "9",
"wallpaper_image": "ut.jpg",
"wallpaper_image_thumb": "ut.jpg",
"total_views": "0",
"cid": "1",
"category_name": "test",
"category_image": "yg9.png",
"category_image_thumb": "qyg9.png"
},
{
"id": "231",
"cat_id": "1",
"scat_name": "0",
"wallpaper_image": "s.jpg",
"wallpaper_image_thumb": "s.jpg",
"total_views": "2",
"cid": "1",
"category_name": "test",
"category_image": "9.png",
"category_image_thumb": "9.png"
},
【问题讨论】:
-
没有理由根据
json_encode()的结果调用str_replace()。它返回有效的 JSON,你可能会通过替换东西来搞砸它。 -
您的第二个查询从不使用
$cat_id。 -
str_replace 是否被调用都没有关系,它不会改变任何东西。是的,我知道我从未使用过 $cat_id,但为什么当我在 url 上调用它时它只基于 cat_id 而它不使用 scat_name。当使它像 **if(isset($_GET['scat_name']))** 并且我调用 "api.php?scat_name=9" 它显示基于 scatname 的结果