2016-03-22 14 views
0

私の問題は、demo-results.phpにdemo.phpで入力したデータから結果が表示されないことです。データは私のデータベースに保存されましたが、demo.phpページがdemo-results.phpページにリダイレクトされた後、javascriptのアラート「0 results」が常に表示されます。結果がPHPで表示されない

これは私のデモの結果ページのPHP部分です:

     <div class="col-lg-12 text-center"> 
          <hr class="visible-xs"> 
          <h2>Water Reading is: </h2> 
          <hr class="visible-xs"> 

      <?php 
        $servername = "localhost"; 
        $username = "root"; 
        $password = ""; 
        $dbname = "water"; 

        // Create connection 
        $conn = new mysqli($servername, $username, $password, $dbname); 
        // Check connection 
        if ($conn->connect_error) { 
         die("Connection failed: " . $conn->connect_error); 
        } 

        $sql = "SELECT first_number, second_number, third_number, fourth_number, fifth_number, sixth_number, prev_reading, pres_reading FROM demo_numbers ORDER BY post_id DESC LIMIT 1;"; 

        $result = $conn->query($sql); 

        if ($result->num_rows > 2) { 
         // output data of each row 
         while($row = $result->fetch_assoc()) { 

       ?> 


         <strong><?php echo $row["first_number"]. $row["second_number"] . $row["third_number"]. $row["fourth_number"] . $row["fifth_number"]. $row["sixth_number"] . "<br>";?></strong> 

          <hr class="visible-xs"> 
          <h2>Your Water Usage is: </h2> 
          <hr class="visible-xs"> 
          <strong> 
       <?php 
         $int_pres = intval($row["pres_reading"]); 
         $int_prev = intval($row["prev_reading"]); 
         $difference = $int_pres-$int_prev; 
         $payment = $difference*26.678;  

         echo $difference . " cu. m." . "<br>"; 

         } 
       ?></strong> 

       <hr class="visible-xs"> 
          <h2>Your Payment is approximately: </h2> 
          <hr class="visible-xs"> 
          <strong> 
       <?php 


         echo "Php " . $difference . "<br>"; ?></strong> 
       <?php 
        } else { 
         echo "<script>alert('0 results')</script>"; 
        } 

        $conn->close(); 
       ?> 

水の読み取り、水の使用と支払いを表示してください。ありがとうございました。

+0

場合多分それは 'でなければなりません($ result-> NUM_ROWS> 0){' – devpro

+0

1つの結果行だけを返すようにクエリを制限している場合、WHILEループ内のその単一の結果行を処理するのはなぜですか? – RiggsFolly

答えて

4

あなたのクエリでLIMITを使用している:

SELECT first_number, second_number, third_number, fourth_number, fifth_number, sixth_number, prev_reading, pres_reading FROM demo_numbers ORDER BY post_id DESC LIMIT 1; 

そして、この条件を使用した:

if ($result->num_rows > 2) { 

あなたがLIMIT 1を使用しているため、この条件if ($result->num_rows > 2) {は常に失敗しますよりもあなたのクエリが1つのレコードだけを返します。 。

ソリューション:

あなたが好きなように条件を使用することができるよりもLIMIT 1を使用する場合:

if ($result->num_rows > 0) { // if no of rows found. 
+0

最新の行のデータだけを表示したいので、私のクエリでLIMITを使用しています。 – IlanaWexler

+0

@ChrisJustin:私の答えにソリューションの部分をチェックしてください。 – devpro

+0

ありがとう!出来た! – IlanaWexler

関連する問題