我想从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);
?>
在查询中使用 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 的建议,在表名和">"运算符之间添加空格。 写成tbl_stock.qty > 0
据我了解,您的查询应该没问题。在控制台中尝试一下,但应该允许您跳过>运算符之前的空格,并且显然,如果某些行与">5"匹配,它们也应与">0"匹配。
我怀疑您的问题不在查询中:我的猜测是您在表 tbl_stock 中有一行 qty = 4,在构建输出数组时会给您带来问题。
在代码中添加一些错误处理,并输出一些中间结果,以检查数据以及输出的生成方式。
问题:
"数量"字段应为整数类型,而不是"瓦尔查尔"。
溶液:
最好的方法是将其更改为整数,但如果由于某些特定原因而不想这样做,请使用以下查询-
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 CAST(tbl_stock.qty AS UNSIGNED) > 0