у меня есть этот код
global $conexion;
global $fecha;
$fecha=strftime( "%Y-%m-%d %H:%M:%S", time() );
$conexion=null;
function conectar()
{global $conexion;
$conexion = mysqli_connect("localhost", "admin", "admin", "admin");
mysqli_set_charset($conexion,'utf8');
}
function desconectar(){
global $conexion;
mysqli_close($conexion);
и меня производит эта ошибка
Severity: Warning --> mysqli_close() expects parameter 1 to be mysqli, null given
Что могло бы быть плохое?
Я даю благополучное прибытие Stackoverflow.
Я Думаю, что, пробовать помогать cГіdigo, что ты показываешь, состоит в том, чтобы осложнять жизнь в пользу нескольких мотивов:
INSERT
или DELETE
, которые берут другую дорожку или похожие вещи. desconectar
, когда mysqli
располагает Вашим собственным mГ©todo desconexiГіn, или когда ты можешь распределять NULL
в объект и с этим уже desconectarГ - в. Можешь писать ты cГіdigo asГ-:
function conectar() { mysqli_connect("localhost", "admin", "admin", "admin"); mysqli_set_charset($conexion,'utf8'); return $conexion; }
Сейчас, ввиду того, что она funciГіn тебя возвращает одна conexiГіn, ты можешь делать это, когда ты будешь нуждаться в ней conexiГіn:
$mysqli=conectar();
Потом, ты используешь $mysqli
, и когда ты не будешь нуждаться в ней, закрываешь ее с:
mysqli_close($mysqli);
, Или если ты предпочитаешь стиль, ориентируемый на объекты:
$mysqli->close();
Или, просто:
$mysqli=NULL;
Это совсем, - sГіlo два lГ-neas cГіdigo.
Как comprenderГЎs, хотеть закрыть ее conexiГіn посредством:
desconectar();
не другая вещь, которая должна пробовать изобрести колесо заново. Кроме того, что вынуждает тебя объявлять nueeeevo внутри нее funciГіn переменная global
segГєn, что PHP понимает под глобальными .
В PHP, переменные, объявленные как global
не функционируют, как один верит. Обычно понятно, что глобальная одна tendrГ - в силу во всем ГЎmbito рукописного шрифта или программы. В PHP не происходит это.
Давайте Видеть этот простой пример:
function conectar()
{
$conexion = "conexion ok";
return $conexion;
}
function desconectar(){
//global $conexion;
$conexion=null;
}
$conexion=conectar();
var_dump($conexion);
desconectar();
var_dump($conexion);
Вывод из-за экрана:
string(11) "conexion ok"
string(11) "conexion ok"
ВїPor quГ©, когда его называть desconectar()
переменную не seteГі в NULL
? Потому что это не глобальная переменная действительно. Для того, чтобы setee нужно объявлять NULL
nueeeevo внутри desconectar()
:
function desconectar(){
global $conexion;
$conexion=null;
}
Сейчас sГ - мы будем иметь:
string(11) "conexion ok"
NULL
Действительно в PHP, истинные глобальные переменные используются $GLOBALS
.
Давайте Видеть пример sГіlo подобно доказательству: Вышедшие
function conectar()
{
$conexion = "conexion ok";
return $conexion;
}
function desconectar(){
$GLOBALS['trueGlobal']=null;
}
$trueGlobal= $GLOBALS['trueGlobal'] =conectar();
var_dump($trueGlobal);
desconectar();
var_dump($trueGlobal);
:
string(11) "conexion ok"
NULL
AquГ - sГ - $trueGlobal
работает истинной глобальной переменной. Это тема, которую он вызывает много confusiГіn в PHP. В любом случае, desaconsejarГ - в использование глобальных переменных для этого.