函数中的mysqli_connect引发错误

时间:2015-02-24 19:42:02

标签: php mysql function mysqli

我确信这个问题很容易回答,但我不明白。 当我尝试连接一个函数时,它会抛出一个“拒绝用户访问''''localhost'”错误。看起来数组在数组中不可用,因为错误说我没有输入用户名和密码。

代码是:

$config["mysql_host"]   = "localhost";
$config["mysql_user"]   = "myusername";
$config["mysql_pass"]   = "mypass";
$config["db_name"]      = "mydb_name";
$config["event_tname"]  = "tablename";


function get_events(){ 
        $mysqli = mysqli_connect($config['mysql_host'], $config['mysql_user'], $config['mysql_pass'], $config["db_name"]); //connect to mysql and select the database

        $sql = "SELECT * FROM ".$config["event_tname"]; //a simple query

        $result = mysqli_query($mysqli, $sql) or die ("Error, please contact the provider!"/* . mysqli_error()*/); //execute

        while($all_events = mysqli_fetch_assoc($result)){  //fetch and just print it
            foreach($all_events as $key => $val)
              echo($val." | ");
        }

        mysqli_free_result($result);} //END -- clear $result
events(); //just an example: call the function

我必须在阵列中更改什么?

此致 弗朗兹

2 个答案:

答案 0 :(得分:0)

只需在函数中添加global $config;

即可
function get_events(){

   global $config;

        $mysqli = mysqli_connect($config['mysql_host'], $config['mysql_user'], $config['mysql_pass'], $config["db_name"]); //connect to mysql and select the database

        $sql = "SELECT * FROM ".$config["event_tname"]; //a simple query

        $result = mysqli_query($mysqli, $sql) or die("Connection error: " . mysqli_connect_error());

        while($all_events = mysqli_fetch_assoc($result)){  //fetch and just print it
            foreach($all_events as $key => $val)
              echo($val." | ");
        }

        mysqli_free_result($result);} //END -- clear $result
get_events(); //ju

或将配置参数传递给函数

function get_events($config){ 

        $mysqli = mysqli_connect($config['mysql_host'], $config['mysql_user'], $config['mysql_pass'], $config["db_name"]); //connect to mysql and select the database

        $sql = "SELECT * FROM ".$config["event_tname"]; //a simple query

        $result = mysqli_query($mysqli, $sql) or die("Connection error: " . mysqli_connect_error());

        while($all_events = mysqli_fetch_assoc($result)){  //fetch and just print it
            foreach($all_events as $key => $val)
              echo($val." | ");
        }

        mysqli_free_result($result);} //END -- clear $result
get_events($config); //ju

答案 1 :(得分:0)

首先你应该考虑使用面向对象的mysqli。没有理由再使用程序风格了。

其次全局PHP变量在函数内部不可用,因此您需要将数组传递给函数,如另一个答案中所述。

有关PHP变量范围的更多信息,请参阅this article

Imho最好的解决方案是为您的应用程序使用一个类,并将配置存储为私有属性。然后,该类的方法将可以访问属性。