使用“>”运算符时出现 Mysql 查询错误


Mysql query error when using ">" operator

我想从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 JOINLEFT 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