2011-04-25 98 views
1

我寫了這個PHP代碼,工作正常...然後我想要一個特定的代碼段作爲一個函數工作,但只要我這樣做,我沒有得到正確的結果...我很困惑出了什麼問題,可以有人請...幫助我非常感謝......php數據庫問題

下面的代碼給我的錯誤...

$arr1=array(); 

$date = date("D"); 

$link = mysql_connect ('localhost', 'root', ''); 

$db = mysql_select_db ('dayevent', $link); 

function grabData($arr){ //works properly NOT as a function, but I want to make this code part act like a funciton 
    $i=0; 
    $sql = "SELECT event FROM events WHERE day = '$date'"; 
    $sel = mysql_query($sql); 

    echo $sel; //this prints Resource id #3 
    if (mysql_num_rows($sel) > 0) { // but doesn't go into if block 

      while($row = mysql_fetch_array($sel)) { 
       echo $row['event'] . '<br />'; 

       //storing DB query result in array 

       $arr[$i]=$row['event']; 

       $i=$i+1;  

      } 

      foreach($arr as $key => $value) { 
       echo $key . " " . $value . "<br />"; 

      } 

    } else echo 'Nothing returned!'; //prints this instead of the correct result 

} 

grabData($arr1); 

mysql_close(); 
+2

也許你應該使用它們之前瞭解函數的基本知識。 http://php.net/manual/en/functions.user-defined.php另外,請在邏輯上縮進代碼以使其更具可讀性。 – deceze 2011-04-25 04:25:02

+1

我的巨魔也說停止使用mysql_ *庫。如果您現在只是學習PHP,那麼可以從改進的庫(MySQLi)開始,或者學習使用PDO。 – 2011-04-25 04:32:41

+0

感謝您的建議,我當然應該學習PHP,我仍然是php語言的新手。 :-) – 2011-04-25 05:00:01

回答

2

移動這個自己的函數中:$date = date("D");。現在的情況是,$ date沒有被定義。如果您使用error_reporting(E_ALL)運行,您將馬上就會發現它。

+0

非常感謝...你清除了所有...... :) – 2011-04-25 04:59:11

-1

測試下面的代碼:

EDITED

$arr1=array(); 
$date = date("D"); 

$link = mysql_connect ('localhost', 'root', ''); 
$db = mysql_select_db ('dayevent', $link); 

function grabData() 
{ 
    global $link,$date; 

    $arr = array(); 
    $i=0; 
    $sql = "SELECT event FROM events WHERE day = '$date'"; 
    $sel = mysql_query($sql,$link); 

    echo $sel; //this prints Resource id #3 
    if (mysql_num_rows($sel) > 0) 
    { 
     while($row = mysql_fetch_array($sel)) 
     { 
      echo $row['event'] . '<br />'; 
      $arr[$i]=$row['event']; 
      $i=$i+1;  
     } 
     foreach($arr as $key => $value) 
     { 
      echo $key . " " . $value . "<br>"; 
     } 
    } else echo 'Nothing returned!'; //prints this instead of the correct result 
    return $arr; 
} 

print_r(grabData()); 
mysql_close(); 
+1

爲什麼你會使用全局變量?此外,不需要將連接傳遞給mysql_query()。不需要爲'date(「D」)'定義一個全局變量,這是一個沒有可變參數的vanilla php函數。這是非常糟糕的使用'全球'和一個不好的做法來教。原來的代碼已經夠糟糕了,這並沒有改進。爲什麼我們增加'$ i'? – 2011-04-25 04:36:22