MySQL查询每次执行时返回不同数量的记录

时间:2017-09-15 14:38:53

标签: php mysql mysqli

我有一个相对简单的MySQL数据库表,名为' inspitemsadditionaltemplate',具有以下结构:

`TLA` varchar(3) NOT NULL,
`Make` varchar(20) NOT NULL,
`Model` varchar(20) NOT NULL,
`InspectionID` varchar(20) NOT NULL,
`ItemSequence` int(11) NOT NULL,
`AdditionKey` int(11) NOT NULL,
`AdditionCode` char(1) NOT NULL,
`AdditionText` varchar(20) DEFAULT NULL

主键是除最后2个以外的所有字段。

该表包含大约70行,但我感兴趣的4个是:

'GBC', 'VC10', '', 'SI', 99, 1, 'N', 'Percentage left'
'GBC', 'VC10', '', 'SI', 100, 1, 'N', 'Percentage left'
'GBC', 'VC10', '', 'SI', 101, 1, 'N', 'Percentage left'
'GBC', 'VC10', '', 'SI', 102, 1, 'N', 'KPH'

我正在执行这个简单的查询:

SELECT * FROM inspitemsadditionaltemplate WHERE TLA = 'GBC' AND Make = 'VC10' AND InspectionID = 'SI';

根据我的理解,这应该返回上面显示的4条记录。当通过PHPMyAdmin中的SQL选项卡执行此操作时,将返回所有4条记录。

问题在于PHP脚本运行相同的查询:(对于IF语句,$ genericInspName确实等于"")

if ($genericInspName == "")
{
    $sql = "SELECT * FROM inspitemsadditionaltemplate WHERE TLA = '".$tla."' AND Make = '".$make."' AND Model = '".$model."' AND InspectionID = '".$inspType."';";
}
else
{
    $sql = "SELECT * FROM inspitemsadditionaltemplate WHERE TLA = '".$tla."' AND Make = '".$genericInspName."' AND InspectionID = '".$inspType."';";
}

if ($additionalresult = $mysqli->query($sql))
{
    while($row = $additionalresult->fetch_assoc())
    {
        $itemSeq = $row['ItemSequence'];
        $additionKey = $row['AdditionKey'];
        $additionCode = $row['AdditionCode'];
        $additionText = $row['AdditionText'];
        $insertSql .= "INSERT INTO inspitemsadditional VALUES ('".$tla."', '".$deviceId."', '".$jobNo."', '".$lineNo."', ".$itemSeq.", ".$additionKey.", '".$additionCode."', '".$additionText."', NULL);";
    }
    $additionalresult->close();
}
else
{
    return;
}

这里看起来似乎并不复杂,但运行这个PHP脚本会返回2,3或4行,没有明显的模式。

我已经尝试过PHPMyAdmin和服务器的排序规则设置,但似乎没有任何区别。

非常感谢任何帮助。

我重新启动了MySQL服务器PC,没有任何区别。

输出始终是前两个,三个或全部四个记录:

GBC, VC10, , SI, 99, 1, N, Percentage left
GBC, VC10, , SI, 100, 1, N, Percentage left
GBC, VC10, , SI, 101, 1, N, Percentage left

GBC, VC10, , SI, 99, 1, N, Percentage left
GBC, VC10, , SI, 100, 1, N, Percentage left

GBC, VC10, , SI, 99, 1, N, Percentage left
GBC, VC10, , SI, 100, 1, N, Percentage left
GBC, VC10, , SI, 101, 1, N, Percentage left
GBC, VC10, , SI, 102, 1, N, KPH

每次运行脚本时都会回显sql,它始终是相同的:

SELECT * FROM inspitemsadditionaltemplate WHERE TLA = 'GBC' AND Make = 'VC10' AND InspectionID = 'SI';

1 个答案:

答案 0 :(得分:0)

在尝试执行sql写入工作表之前,脚本正在从csv文件更新模板表中的数据。当我删除csv文件以便它没有发生时,它可以正常工作。