0

私は現在php関数に取り組んでおり、少し面倒です。

現時点では、次のような php ページで関数を使用しています。

get_Properties($currUser);

次に、これを行う 2 番目の 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 "データがありません!"; }

ああ、私はまだ学んでいるので、私が改善するのを助けるために私のコードを自由に批評してください:)たくさんありがとう!

4

2 に答える 2

1

shannonoman の回答を拡張するnum_rowsと、while ステートメントを実行する前に呼び出しをチェックとして追加できます。

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

$mysqli->queryコードをさらに改善する機会として、1回できるのに 2 回呼び出していることも指摘しておきます。

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;
}
于 2013-01-21T00:57:59.797 に答える
0

返された行数は次の方法で確認できます。

$num_rows = $Results->num_rows;

したがって、ゼロを確認して、必要なアクションを実行してください。

于 2013-01-20T11:46:19.913 に答える