从PHP SQL获得结果但我的“无结果消息”没有显示

时间:2014-11-16 20:23:05

标签: php sql

我有一个SQL表如下:

prim auto inc | hdate | nvs | vsa | batch1number | batch2number |

我正在进行sql查询,其目的是将用户输入与第1列和第2列感兴趣的列进行比较。如果其中任何一列具有值,我将结果输入到选择下拉列表中。 - 这部分正在运作。

<?php
include 'config.php';

$userinputone=$_POST['abc']; 

$userinputone = mysqli_real_escape_string($con,$userinputone);
$sql = "SELECT * FROM handover WHERE batch1number  = '".$userinputone."' OR        

batch2number = '".$userinputone."' ";
$result = mysqli_query($con,$sql);



while($row = mysqli_fetch_array($result)) {

$count=mysqli_num_rows($result);
if($count==0 ){

echo "</br></br></br></br></br><p> No Matching results found</p>";
}

else{     
echo "<select>";
echo "<option>" . $row['batch1number'] . $row['batch2number'] . "</option>";
echo "</select>";
}
}

mysqli_close($con);

但是,当我在空白条目中键入(或不键入!)时,不会输出“无匹配结果”的消息。 相反,我得到了所有结果,包括下拉列表中的空白结果。 此外,当我输入一个不匹配的值时,我只得到一个空白页面而没有消息。 我查找了相关问题上建议的empty()语法,并尝试应用我的一些变量。我很确定它与$ count == 0部分有关,并尝试添加其他运算符,如|| batch1number =''&amp;&amp; batch1number ='' - 查询有效,但我仍然没有收到错误消息。

如果有人可以帮助我,如果时间允许解释为什么我会得到这些结果,我将非常感激。

1 个答案:

答案 0 :(得分:1)

代码中存在逻辑错误。你永远不会进入循环,因为while($row = mysqli_fetch_array($result))从一开始就返回false。你需要的是:

<?php
include 'config.php';

$userinputone=$_POST['abc']; 

$userinputone = mysqli_real_escape_string($con,$userinputone);
$sql = "SELECT * FROM handover WHERE batch1number  = '".$userinputone."' OR        

batch2number = '".$userinputone."' ";
$result = mysqli_query($con,$sql);

$count=mysqli_num_rows($result);

if($count==0 ){
    echo "</br></br></br></br></br><p> No Matching results found</p>";
}

else{
    while($row = mysqli_fetch_array($result)) {
        echo "<select>";
        echo "<option>" . $row['batch1number'] . $row['batch2number'] . "</option>";
        echo "</select>";
    }
}

mysqli_close($con);

更新 thanx到Ohgodwhy

您可能还希望改进$userinputone

if (isset($_POST['abc'])) {
    $userinputone = $_POST['abc'];
}
else {
    $userinputone = false;
}

或只是

$userinputone = isset($_POST['abc'])? $_POST['abc'] : false;

然后将整个查询事件包装成检查$userinputone是否确实设置:

if(isset($userinputone)) {
    ...
}