2012-04-25 127 views
0

函數popList()需要兩個參數 - 列的名稱和表的名稱。 基本上popList()函數連接到一個mysql服務器,然後連接到一個數據庫,並根據傳遞給用來填充頁面上的列表框的函數來建立一個sql查詢來檢索數據。函數會填充第一個列表框,但不會從數據庫表中填充第二個列表框

只有一個列表框可以正常工作,但如果頁面上有第二個列表框再次調用該函數時使用了不同的參數(列名和表名),它將顯示爲空,並在源代碼中顯示以下內容的頁面右側下第一填充列表框的源:

警告:mysql_connect()函數[function.mysql-連接]:拒絕用戶 'ODBC' @ '本地主機'(使用密碼訪問 :否)in C:\ xampp \ htdocs \ test on line
未連接:(使用密碼:NO) 訪問被拒絕的用戶「ODBC」 @「localhost」的

我用兩個呼叫這是默認的本地主機,樹根和測試沒有密碼(純粹相同的連接憑據目的)

爲什麼它表現得像這樣?

編輯*(源)*:

<?php 
function popList($col, $tbl) { 

    require_once "credentials.php"; 

    // Opens a connection to a MySQL server 
    $connection=mysql_connect($host, $username, $password); 
    if (!$connection) { 
     die('Not connected : ' . mysql_error()); 
    } 

    // Set the active MySQL database 
    $db_selected = mysql_select_db($database, $connection); 
    if (!$db_selected) { 
     die ('Can\'t use db : ' . mysql_error()); 
    } 

    $sql = "SELECT $field FROM $table"; 
    $query = mysql_query($sql); 

    while ($row = mysql_fetch_array($query)) { 
     echo '<option value="' . $row["$field"] . '">' . $row["$field"] . '</option>'; 
    } 

    mysql_close($connection); 
} 
?> 

SOLUTION

:好像用require_onceinclude_once導致該問題,但使用includerequire實際修復問題。

替換 require_once "credentials.php"credentials.php實際的代碼,像這樣

function popList(...) { 

require "credentials.php"; // changed to require from require_once. same with include 


... 
} 
+3

我們可能需要看到代碼... – eggyal 2012-04-25 16:06:46

+0

好。添加了源代碼。 – Bob 2012-04-25 16:11:51

+1

它將非常顯得好像'$ username'在函數調用之間被改變;也許搜索其餘的代碼來引用該變量? – eggyal 2012-04-25 16:13:24

回答

2

require_once做它說:它要求一次。第一次調用popList時,credentials.php中的所有內容都會被轉儲到函數的作用域中。第二次popList被調用,沒有任何反應,因爲credentials.php在此次運行中已經需要一次。

你應該有一個配置對象,而不是某個地方的變量在文件中的一堆,你不應該使用requireinclude像這樣的函數中,你應該有E_STRICT開啓,所以你看到$password的警告等等沒有被定義。

3

引用您,

我用兩個呼叫這是默認的本地主機,根和相同的連接憑據沒有密碼(純粹用於測試目的)

Si你提到沒有密碼的root用戶,並在錯誤,它來:Access denied for user 'ODBC'@'localhost' (using password: NO)這意味着你實際上試圖連接用戶ODBC沒有密碼,我認爲這是一個密碼。

+0

但我以root身份連接。 – Bob 2012-04-25 16:11:32

+0

@Bob第二次嘗試連接嘗試連接爲「ODBC」。 – Jim 2012-04-25 16:18:09

0

你好你可以這樣做

$query="SELECT * FROM bus_type order by bus_type_id Asc"; 
$result = mysqli_query($conn, $query); 
echo "<select name=bustype size=sizes class=bus_txtbox value=''>Type of the Bus</option>"; 
    while($line=mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
    echo "<option value=$line[bus_type_id]>$line[bus_type]</option>"; 
} 
echo "</select>"; 
相關問題