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

Php 如果没有数据库信息,则返回一个变量,用于创建关于无数据的注释,php,mysql,loops,Php,Mysql,Loops,我目前正在开发一个php函数,遇到了一些麻烦 目前,我在php页面上使用的函数如下所示: get_Properties($currUser); 然后,转到第二个php文件,该文件执行以下操作: function get_Properties($currUser) { $mysql = New Mysql(); return $mysql->get_Properties($currUser); } 最后但并非最不重要的一点是,这带来了我正在研究的功能,即: func

我目前正在开发一个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();
    }
}
函数获取属性($currUser){
//mysqli的新实例
$mysqli=新的mysqli(DB_服务器、DB_用户、DB_密码、DB_名称);
//如果不起作用,请给出一个错误
如果(!$mysqli){
die('连接到数据库时出现问题');
}
$queryProperties=“选择Id、代理、主图像、地址、卧室、浴室、价格
从属性
其中代理=“$currUser”
按Id描述订购”;
if($Results=$mysqli->query($queryProperties)){
如果(!$Results){
echo“无法运行查询:”。mysql_错误();
出口
}
否则{
$Results=$mysqli->query($queryProperties);
}
而($rows=$Results->fetch_assoc()){
回声';
回声';
回声';
回声';
回声';
回声';
回声';
回声';
回声';
回声';
回声';
回音“.$rows[“卧室”]。“卧室”;
回声'.$rows['Baths'].'bathroms';
回声';
回声';
echo'...$rows['Price'.'PCM';
回声';
回声';
回声';
}
}
$mysqli->close();
}
}
现在我面临的问题是,并不总是有什么东西可以回响。有时$rows变量将不返回任何内容(该特定用户没有条目)

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


哦,当我还在学习时,请以任何方式评论我的代码以帮助我改进:)非常感谢

您可以使用以下选项检查返回的行数:

$num_rows = $Results->num_rows;

因此,检查该值是否为零,并采取您需要的任何行动。

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

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;
}

您的函数命名错误。它没有得到任何东西并返回,它打印东西。虽然函数名现在确实会影响执行,但对于所有阅读代码的开发人员来说都很麻烦。你能为我澄清一下吗?谢谢,您的原始函数返回一个值。这是命令“get_properties()”时的预期行为。第二个不返回任何内容,而是打印它。它应该被称为“print_properties()”。哦,我明白了,那么第一行应该是:$mysql->get\u properties($currUser);而不是返回$mysql->get_属性($currUser)?不,基本错误是函数使用了
echo
。不要在那里做,到别的地方做。您的函数应该返回具有用户属性的数组或对象,而不是其他属性。如果有,你可以在其他地方决定你是否没有发现任何东西,以及这个“什么都没有”应该是什么样子。如果不返回任何内容,也不能返回
$userHasNoData=1
。这是否在函数的范围内?“$num_rows=$Results->num_rows;”或者在调用函数的页面上?还是将$num_行与echo一起返回?