Intereting Posts

Функции, SQL-соединения и глобальная переменная

Что-то не так с подключением и закрытием базы данных, вызывая функцию ниже с помощью команд mysql_query и mysql_fetch_array между двумя

<?php function dbconnect() { $sql = "localhost"; $username = "------"; $password = "-----"; $connection = mysql_connect($sql, $username, $password) or die("unwable to cct"); $databse = mysql_select_db("-------", $connection); global $connection; } function close() { global $connection; mysql_close($connection); } dbconnect(); $query = "Some SQL Statement"; $data = mysql_query($query, $connection); - L1 while (mysql_fetch_assoc($data)) { //echo something } close(); ?> 

В настоящее время я получаю сообщение о том, что $ connection в L1 должен быть ресурсом, но является BOOL. Если я дам заявление о смерти там, то же самое срабатывает. Я понятия не имею, что не так. Пожалуйста, укажите любые ошибки, которые вы можете. Я должен принять отрыв от кодирования, и через некоторое время я возвращаюсь.

С уважением

Solutions Collecting From Web of "Функции, SQL-соединения и глобальная переменная"

Вы должны использовать ключевое слово global перед назначением переменной $connection . В противном случае вы объявляете локальное $connection внутри функции, а затем вызываете ссылку на еще несуществующее глобальное $connection . В других функциях используется несуществующий глобальный.

 function dbconnect() { // Global first to be sure the subsequent $connection is the global // rather than a new one local to this function global $connection; $sql = "localhost"; $username = "------"; $password = "-----"; // Now this modifies the global $connection $connection = mysql_connect($sql, $username, $password) or die("unwable to cct"); $databse = mysql_select_db("-------", $connection); } 

Более читаемым будет использование массива $GLOBALS :

 function dbconnect() { $sql = "localhost"; $username = "------"; $password = "-----"; // Using the $GLOBALS superglobal array $GLOBALS['connection'] = mysql_connect($sql, $username, $password) or die("unwable to cct"); $databse = mysql_select_db("-------", $GLOBALS['connection']); } 

Лучше всего было бы вернуть $connection из dbconnect() и использовать это значение в других функциях:

 function dbconnect() { $sql = "localhost"; $username = "------"; $password = "-----"; $connection = mysql_connect($sql, $username, $password) or die("unwable to cct"); $databse = mysql_select_db("-------", $connection); // Return from the function return $connection; } // call as $connection = dbconnect(); // and define your other functions to accept $connection as a parameter 

объявить глобальное соединение $ перед вызовом mysql_connect ()

 function dbconnect() { global $connection; $sql = "localhost"; $username = "------"; $password = "-----"; $connection = mysql_connect($sql, $username, $password) or die("unwable to cct"); $databse = mysql_select_db("-------", $connection); } 

Не слишком уверен, но попробуйте закрыть его, используя

 mysql_Close($Connection); 

все остальное выглядит хорошо

Просто поставьте глобальное соединение $; строка в начале функции, и она должна работать. Использование глобального ключевого слова в конце функции означает, что вы хотите использовать глобальную переменную $ connection. Но то, что вы сейчас будете делать, – это определение глобальной переменной $ connection «фактического идентификатора соединения».