如果没有数据库信息,则返回一个变量以用于创建关于无数据的注释

时间:2013-01-20 11:43:04

标签: php mysql loops

我目前正在开发一个php函数,但我有点麻烦。

目前我在php页面上使用了一个函数,如下所示:

get_Properties($currUser);

反过来,转到第二个执行此操作的php文件:

function get_Properties($currUser) {
    $mysql = New Mysql();
    return $mysql->get_Properties($currUser);   
}

最后但并非最不重要的是,这带来了我正在研究的功能:

function get_Properties($currUser) {
    //new instance of mysqli
        $mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
        //if it doesn't work give an error
        if (!$mysqli) {
            die('There was a problem connecting to the database.');
        }
        $queryProperties ="SELECT Id, Agent, MainImage, Address, Bedrooms, Baths, Price
                     FROM Properties
                     WHERE Agent = '$currUser'
                     ORDER BY Id DESC";
        if ($Results = $mysqli->query($queryProperties)){
            if (!$Results) {
                echo 'Could not run query: ' . mysql_error();
                exit;
            }
            else{
                $Results = $mysqli->query($queryProperties);
            }
            while ($rows = $Results->fetch_assoc()) {
                echo '<div class="product clearfix">';
                  echo '<div class="l-image">';
                    echo '<img src="'.$rows['MainImage'].'" alt="'.$rows['Agent'].'" title="'.$rows['Agent'].'" />';
                    echo '<div class="l-image-hover">';
                      echo '<a href="#" class="l-lupa"><!-- --></a>';
                      echo '<a href="#" class="l-link"><!-- --></a>';
                    echo '</div>';
                 echo ' </div>';
                  echo '<div class="l-shadow"><!-- --></div>';
                  echo '<div class="l-title"><a href="property-details.php">'.$rows['Address'].'</a></div>';
                  echo '<div class="l-features clearfix">';
                    echo '<div class="l-bedrooms">'.$rows['Bedrooms'].' Bedrooms</div>';
                    echo '<div class="l-baths">'.$rows['Baths'].' Bathrooms</div>';
                  echo '</div>';
                  echo '<div class="l-details clearfix">';
                    echo '<div class="l-price">£'.$rows['Price'].' PCM</div>';
                    echo '<div class="l-view"><a href="property-details.php?PropertyId='.$rows['Id'].'">View details</a></div>';
                  echo '</div>';
                echo '</div>';
            }
        }
        $mysqli->close();
    }
}

现在我遇到的问题是,并不总是会有回应的东西。有时$ rows变量将不返回任何内容(该特定用户没有条目)。

问题是。我如何说“如果没有返回任何行,显然没有该用户的数据,所以返回一个像$ userHasNoData = 1的变量。或类似的东西。所以在主页上我可以说”if(isset) ($ userHasNoData)){echo“没有数据!”; }

哦,当我还在学习的时候,请完全自由地批评我的代码以任何方式帮助我改进:)谢谢你们!

2 个答案:

答案 0 :(得分:1)

扩展shannonoman的答案,您可以在执行while语句之前添加num_rows调用作为检查:

if ($result->num_rows == 0) {
    echo 'Sorry, no data!';
} else {
    while ($rows = $Results->fetch_assoc()) {
        // output stuff
    }
}

作为进一步改进代码的机会,我还想指出,当你能够做一次时,你正在调用$mysqli->query两次:

if ($Results = $mysqli->query($queryProperties)) {
    if ($result->num_rows == 0) {
        echo 'Sorry, no data!';
    } else {
        while ($rows = $Results->fetch_assoc()) {
            // output stuff
        }
    }
} else {
    echo 'Could not run query: ' . $mysqli->error; // not mysql_error!
    exit;
}

答案 1 :(得分:0)

您可以使用以下命令检查返回的行数:

$num_rows = $Results->num_rows;

因此,请检查是否为零并采取您需要的任何操作。