Что-то не так с подключением и закрытием базы данных, вызывая функцию ниже с помощью команд 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. Если я дам заявление о смерти там, то же самое срабатывает. Я понятия не имею, что не так. Пожалуйста, укажите любые ошибки, которые вы можете. Я должен принять отрыв от кодирования, и через некоторое время я возвращаюсь.
С уважением
Вы должны использовать ключевое слово 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 «фактического идентификатора соединения».