我想从mysql数据库获取JSON的输出。我的代码中存在问题。问题是如果我把0,1,2,3或4放在这里 tbl_stock.qty> ?,没有输出。但是如果我把5或更高的数字放在5以上就可以得到输出。
我的PHP代码
<?php
require_once 'include/Configg.php';
header('Content-Type: application/json');
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die("connection failed");
mysql_select_db(DB_DATABASE,$con) or die("db selection failed");
$r=mysql_query("select tbl_stock.matnum, tbl_stock.sorg, tbl_stock.qty, tbl_mas_material.matname, tbl_mas_material.matgrp from tbl_stock INNER JOIN tbl_mas_material on tbl_stock.matnum = tbl_mas_material.matnum where tbl_stock.qty> 0");
$result = array();
while($row=mysql_fetch_array($r)){
array_push($result,
array('matnum'=>$row[0],
'sorg'=>$row[1],'qty'=>$row[2],'matname'=>$row[3],'matgrp'=>$row[4]));}
echo json_encode(array("feed"=>$result));
mysql_close($con);
?>
答案 0 :(得分:0)
在查询中使用 LEFT JOIN 。 LEFT JOIN 关键字返回左表(tbl_stock)中的所有行,右表中的匹配行(tbl_mas_material)。
当没有匹配时,右侧的结果为NULL。
SELECT tbl_stock.matnum, tbl_stock.sorg, tbl_stock.qty, tbl_mas_material.matname, tbl_mas_material.matgrp
FROM tbl_stock
LEFT JOIN tbl_mas_material
ON tbl_stock.matnum = tbl_mas_material.matnum
WHERE tbl_stock.qty > 0
另外, saty 建议,在tablename和'&gt;'之间添加空格运营商。将其写为tbl_stock.qty > 0
答案 1 :(得分:0)
根据我的理解,您的查询应该没问题。在控制台中尝试,但应允许您在&gt;之前跳过该空格。操作员,如果某些行匹配&#34;&gt; 5&#34;它们也应匹配&#34;&gt; 0&#34;。
我怀疑你的问题不在查询中:我的猜测是你在表tbl_stock中有一行qty = 4,在构建输出数组时会给你带来问题。
在代码中添加一些错误处理并输出一些中间结果来检查数据以及如何构建输出。
答案 2 :(得分:0)
<强>问题:强>
qty字段应该是整数类型而不是varchar。
<强>解决方案:强>
最好的方法是更改整数,但如果您因某些特定原因不想这样做,请使用以下查询 -
ServerSelectionTimeoutError: No servers found yet