2017-05-08 97 views
0

我想了解這兩行代碼之間有什麼區別。兩者有什麼區別? (查詢選擇和顯示結果)

我有兩頁ACR.phpwebPage1.php。包含在我需要建立數據庫連接的任何頁面上的ACR.php。目標是從數據庫中獲取值並將其顯示在網頁上。呼應$result1

// 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不會顯示正確的值,而是回聲'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> 

然而,如果我在$result2,從數據庫表中的正確值顯示回聲。

這是爲什麼?是什麼讓這個如此呢?是不是$thisPort$thatPort都調用表中的同一行?

更新:我使用$thisPort,部分取得本地和遠程地址時。所以我寧願使用$thisPort的當前語法,因爲它的工作原理,但將其更改爲$thatPort的語法會使頁面崩潰。爲什麼在使用這種方法時可以從數據庫中提取值,但是當我需要在頁面上顯示端口時,則不能。

如果我不需要,我不想啓動一個額外的變量($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包含一個SQL查詢字符串,它是mysqli_query函數的有效參數,並在$result2中創建有效的結果集。