2011-04-25 82 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