2011-12-06 38 views
-3

爲什麼此代碼返回兩行的行數?PHP爲什麼PHP代碼返回兩行的行數?

<?php 
    include("dbinfo.php"); 
    $link = mysql_connect($mysql_host, $mysql_user, $mysql_password); 
    if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db($mysql_database, $link); 
    $result = mysql_query("SELECT * FROM apptable"); 
    $no = mysql_num_rows($result); 
    mysql_close($link); 
     echo "<h1><big>".$no."</big></h1>"; 
?> 

此外,可有人訪問dbinfo.php不知何故,並獲得了密碼?

對不起,我使用下面的代碼來顯示這個輸出,但它顯示了兩次行數,一次格式化,另一次沒有。

<td> 
     <?php include("regcount.php"); echo $no; ?> 
     </td> 
+2

它不應該是這一切的代碼,你是如何調用它 –

+0

,問題是 – ajreal

+1

你能描述你希望看到什麼樣VS??? 。你真的看到了什麼? – chesles

回答

3

因爲你正在包含文件(這是回聲),所以你再次呼應它。

include("regcount.php"); // This will output everything in regcount.php, including formatted count 
echo $no; // Then you're echoing the variable that holds the result of mysql_num_rows() 
+0

所以包含部分會自動迴應它,對吧?另外,只想問一下,腳本中的最後一個變量沒有被回顯,是嗎? – adeelx

+0

是的,包括與打開該文件幾乎相同的內容,將內容複製/粘貼到包含文件中。我不知道你的意思是「腳本中的最後一個變量被回顯」。 –

+2

@AdeelHasanAkbari,腳本中的最後一個變量沒有被回顯。輸出中只包含''標籤之外的文本以及顯式'echo「或其他輸出函數的輸出。 – chesles

3

它呼應$no兩次,因爲你告訴它要

echo "<h1><big>".$no."</big></h1>"; 
<?php include("regcount.php"); echo $no; ?> 
1

讓我們來看看這是怎麼回事就在這裏:

<?php include("regcount.php"); echo $no; ?> 

這包括和執行regcount.php,這確實一個echo()通話顯示格式化的行數。然後它打印出$no的值,這就是爲什麼你需要兩次,一次是格式化(從regcount.php),一次沒有(從$no)。

至於你的其他問題dbinfo.php,如果你只是在設置變量,那麼不,用戶看不到你的密碼。如果它迴應任何內容,則會顯示該內容。沒有看到dbinfo.php有什麼內容,真的不可能說。

+0

那裏沒有迴音 - 感謝您的信息! – adeelx

2

有兩點你在做echo $no,所以$no被回聲兩次,一次在包含的regcount.php中,一次在原始文件中。

至於dbinfo.php,有人可以看到它的唯一方法是如果您的服務器配置錯誤。作爲一般規則,這是一個好主意,通過使用相對(如include("../dbinfo.php"))或絕對路徑(如include("/some/path/dbinfo.php")保持像Web服務器的文件路徑的那個以外的任何敏感信息,包括它。

您也可以使用set_include_path添加路徑在您dbinfo.php文件的生活:

$path = '/some/path/'; 
set_include_path(get_include_path() . PATH_SEPARATOR . $path); 
include("dbinfo.php"); 
+0

這是一流的!謝謝! – adeelx