insertar formulario ejemplos ejemplo desde datos conectar con php scope require-once

php - formulario - Use Require_once() para incluir las variables de conexión de la base de datos correctamente



insertar datos php y mysql ejemplos (3)

Soy un novato de php (pero un desarrollador de larga duración en otros idiomas) y estoy probando algunas conexiones de ejemplo de db en "PHP, MySQL y JavaScript". Muestra un archivo de ejemplo para incluir variables de conexión db (nombre de servidor, nombre de usuario, contraseña, base de datos, etc.). Tengo un archivo php que tiene un puñado de funciones que escribí y una de ellas tiene algunas consultas SQL. Por alguna razón, llamar require_once en ese archivo no produce ningún error (tengo E_ALL configurado) pero esas variables en mi base de datos php son nulas.

Llamé a un eco con todas las variables dentro de esa función para ver qué diablos está pasando y, por supuesto, imprime una línea en blanco. ¿Qué hay en el mundo fuera del alcance? Me falta algo simple.

Aquí hay un ejemplo de lo que estoy haciendo

db_login.php

<?php $db_server = ''localhost''; // .... ?>

functions.php

<?php require_once(''db_login.php''); function myfunction() { echo "$db_server"; // ... } ?>

Llámame loco, pero ¿no debería ser tan simple como para funcionar?



Las variables que declaras en db_login.php son globales. Para acceder a ellos en su función, necesita usar la variable $GLOBALS , por ejemplo $GLOBALS[''db_server''] , o declararlos como globales dentro de su función usando la palabra clave global , por ejemplo global $db_server .


PHP no tiene alcance de función como Javascript, por lo que no tiene acceso a las variables en db_login.php dentro de las funciones de functions.php .

Hay múltiples formas de lidiar con esto. Debido a su uso probable del nombre del servidor, las constantes globales probablemente serían una buena solución, ya que nada puede cambiarlas.

En tu caso, puedes hacer:

<?php require_once(''db_login.php''); // You have access to $db_server here. // Create a constant. define("DB_SERVER", $db_server); function myfunction() { // Using a constant. Note that there is no "$". echo DB_SERVER ; // Constants are interpreted inside double quotes too echo "/nMy constant is DB_SERVER"; // ... } ?>

En su caso, tener el nombre del servidor como una constante es probablemente apropiado. Si está tratando con algo que desea tratar como una variable verdadera, puede pasar la variable a la función por valor o por referencia:

myfunction($variable); // by value function myfunction($pass_variable_to_me_by_value) { echo $pass_variable_to_me_by_value; // ... } function myfunction(& $pass_variable_to_me_by_reference) { echo $pass_variable_to_me_by_reference; // ... }

Como nota, en su caso , usar la palabra clave global o la matriz $ GLOBALS dentro de una función es esencialmente lo mismo que pasar por referencia. , pero si no está pasando del alcance global, pueden ser muy diferentes (en una clase o de otra función, por ejemplo).