2017-05-08 7 views
0

私はこれらの2行のコードの違いを理解しようとしています。2つの違いは何ですか? (クエリの選択と結果の表示)

私は2ページあります。ACR.phpwebPage1.phpです。 ACR.phpは、データベース接続が必要なページに含まれています。目標は、データベースから値を取得し、それをWebページに表示することです。

// ACR.php // 

<?php 

// Est. Connection 
$dbc = mysqli_connect($ACR_host, $ACR_user, $ACR_pass, $ACR_tablename) 
or die('Error communicating to MySQL server'); 

// Select value from row in table 
$thisPort = $dbc->query("SELECT activePort FROM table1 ")->fetch_row()[0]; 

// Select value from row in table 
$thatPort = "SELECT activePort FROM table1"; 



// Displays result 
$result1 = mysqli_query($dbc, $thisPort); 
$result2 = mysqli_query($dbc, $thatPort); 

?> 

webpage1.php$result1をエコーときに正しい値を表示するのではなく'result not found'をエコーし​​ません。

// webPage1.php // 

<?php include 'ACR.php';?> 

<!--html--> 
<tr> 
<th>Port<span id="portDisplay"></span><sup></sup>:</th> 
<td id="showPort" style="text-align:left;width:75%;"> 

<?php 

session_start(); 


if (mysqli_num_rows($result1) > 0) { 
    // output data of each row 
    while($row = mysqli_fetch_assoc($result1)) { 
     echo "&nbsp;&nbsp;&nbsp;" . $row["activePort"]; 
     // echo $row; 
    } 
} else { 
    echo "result not found"; 
} 

mysqli_close($dbc); 

?> 
</td> 
</tr> 

Iは$result2エコー場合は、正しい値は、データベーステーブルから表示します。

これはなぜですか?これをどうする? $thisPort$thatPortの両方がテーブル内で同じ行を呼び出していませんか?

更新日:ローカルとリモートアドレスを取得するときに、部分的に$thisPortを使用します。だから私は$thisPortのための現在の構文を使用して好きですが、$thatPortの構文に変更すると、ページがクラッシュします。なぜこの値をデータベースから取り出すことができるのですか?このメソッドを使用すると、ページにポートを表示する必要はありません。

元のvar($thatPort)が既にこれを実行しているときに、データベースから値をエコーする必要はありませんが、余分な変数($thatPort)を開始したくありません。

+1

サイドノートでは、何かをエコー(送信)する前に 'session_start();'を呼び出す必要があります。そうしないと、ヘッダーに関するエラーが発生します。 http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php –

+0

私はエコーする前に 'session_start()'をまだ呼びませんか? ( 'webPage1.php'を参照)、あるいは' ACR.php'を参照していますか?私は 'ACR.php'に何もエコーしていません。 – JustADrone

+0

あなたはhtmlコード(テーブル行とセル)を送信しています。 session_startを呼び出す前にヘッダーをエコー、プリント、送信、または変更すると失敗します。あなたが問題にぶつかるか、あなたが私と議論するまで無視して待つことができます。 –

答えて

0

$thisPortにはすでにデータベースの行が含まれています。これはmysqli_queryに提供する有効な引数ではありません。あなたのPHPエラーログを見ると、おそらく(ログ設定によっては)$result1 = mysqli_query($dbc, $thisPort);という行がエラーメッセージを生成することがわかります。 $result1には実際にはFALSEが含まれます。

$thatPortには、mysqli_query関数の有効な引数であるSQLクエリ文字列が含まれており、$result2に有効な結果セットが作成されます。

関連する問題