2015-02-24 2 views
0

Я уверен, что вопрос легко ответить, но я не понимаю. Когда я пытаюсь подключиться к функции, она бросает мне ошибку «Доступ запрещен для пользователя» @ «localhost». Похоже, массив не доступен в массиве, потому что ошибка говорит, что я не вводил имя пользователя и пароль.mysqli_connect в функции вызывает ошибку

Код:

$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 

Что я должен изменить в массиве?

С уважением, Franz

+1

http://php.net/manual/en/language.variables.scope.php –

ответ

0

Сначала вы должны рассмотреть возможность использования Mysqli объектно-ориентированное , Нет смысла использовать процедурный стиль больше.

Во-вторых, глобальные переменные PHP недоступны внутри функций, поэтому вам нужно передать массив функции, как описано в другом ответе.

См. this article для получения дополнительной информации о области переменных PHP.

Imho лучшим решением будет использование класса для вашего приложения и сохранение конфигурации в качестве частных атрибутов. Затем методы этого класса будут иметь доступ к атрибутам.

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 
+0

Омг, извините за этот вопрос: | : D спасибо ^^ – Franz

Смежные вопросы