Webmaster > Desarrollo Web

¿como hacer un script base para conectar a bases de datos MySQL con PHP?

(1/1)

shakaran:
El siguiente es un pequeño tutorial de como hacer una buena base o plantilla de código para conectar tus bases de datos vía MySQL a tus proyectos PHP.

Para conectar a MySQL necesitas crear un base de datos y un usuario MySQL, puedes hacerlo vía Cpanel o vía SSH si dispones de permisos en una cuenta ebasic o superior de Quijost.

Una vez creado, recopila esos datos, y crearemos una carpeta llama "inc" de "includes" bajo tu directorio public_html que será la destinada a guardar archivos que normalmente se incluirán en varias partes del proyecto.

Dentro de la carpeta crea un archivo config.php donde guardaremos los datos de acceso a la base de datos y usuario mysql con permisos para acceder.

El archivo config.php puede tener el siguiente aspecto:


--- Código: ---<?php
# Configuración de datos para conectar al servidor de base de datos
$servidor              = 'localhost';         # Servidor (por defecto:localhost)
$prefijo_usuario       = 'quijostest';              # Usuario para el hospedaje (por defecto:quijostest)
$usuario_mysql         = $prefijo_usuario.'_test';  # Usuario MySql para la base de datos
$contraseña_mysql      = 'test12345';         # Contraseña MySql para la base de datos
$base_de_datos_mysql   = $prefijo_usuario.'_test';  # Base de datos mysql
?>

--- Fin del código ---

Para aquellos que desconozcan PHP, el archivo no es complicado. Con <? se debe abrir todo script PHP y con ?> se debe cerrar.

Toda variable en PHP debe ir precedida de un dolar $. y posteriormente lo que hacemos es asignar los valores de usuario, base de datos, y contraseña de mysql.

Es buena costumbre entre los programadores, realizar su código escrito en ingles, primero para que sea más compresible a otros y segundo porque suele resultar más corto y entendible que variables en otros idiomas, además de ser un estándar internacional a la hora de desarrollar software.

Por lo tanto, el archivo en inglés quedaría:


--- Código: ---<?php
# Data config for connect to database server
$server           = 'localhost';         # Server (default:localhost)
$user_prefix      = 'quijostest';              # User of hosting (default:test)
$username_mysql   = $user_prefix.'_test';  # Mysql database user
$password_mysql   = 'test12345';         # Mysql database password
$database_mysql   = $user_prefix.'_test';  # Mysql database
?>

--- Fin del código ---

También como consejo de programación, acostumbraros a poner las variables en minúsculas y si tienen varias palabras, ponerlas con _ para separarlas.

Una vez creado este archivo, ya tenemos la base para el siguiente que realizará nuestras conexiones a la base de datos. Este archivo se llamará connection.php e irá en la carpeta "inc".

Y tendrá el siguiente contenido:


--- Código: ---<?php
require_once('config.php');

#  Check database to host connection 
if(!function_exists('mysql_connect'))
{
    echo 'PHP cannot find the mysql extension. MySQL is required for run. Aborting.';
    exit();
}

$dbh = @mysql_connect($server, $username_mysql, $password_mysql)
or die('Error: Database to host connection: '.mysql_error());

mysql_select_db($database_mysql, $dbh)
or die('Error: Select database: '.mysql_error());
?>

--- Fin del código ---

En este archivo, hemos incluido el archivo config.php, comprobamos que exista la función de conexion de mysql, sino mostramos un error y realizamos la conexión con los datos de config.php, guardando en una variable $dbh (DataBase Host) el acceso de conexión.

Ahora simplemente para utilizar esta "base" o plantilla en cualquier script PHP que este bajo public_html, incluiremos el archivo connection.php y haremos consultas con mysql_query con la variable $dbh por ejemplo un index.php que muestre los nombres de usuarios de una tabla users:


--- Código: ---<?php
require_once('inc/connection.php');

#Execute a MySQL query
$result = mysql_query("SELECT name FROM users", $dbh);

while($row = mysql_fetch_array($result))
{
    echo 'User: '.$row['name'].'<br>';
}
?>

--- Fin del código ---

Cualquier duda, mejora o comentario son bienvenidos.

yebenes:
El tutorial es genial, me ha servido muchísimo.

Pero faltaría algo por explicar, cuando quiero añadir un registro a la tabla uso INSERT INTO, ¿pero cuando quiero añadir 2000 registros? hago 2000 INSERT INTO? Tiene que existir alguna manera más eficiente de hacerlo, ¿no?

Gracias por todo! Un saludo, yebenes.

shakaran:
Si haces 2000 INSERT Mysql no tendrá problemas (a partir de millones podría sufrir un ligero overload).

Si realmente quieres generar 2000 insert y hacerlos como una sola transacción, podrías hacer algo como múltiples inserciones en un INSERT o bien mandar todos los insert como una sola transacción:


--- Código: ---LOCK TABLES a WRITE;
INSERT INTO a VALUES (1,23),(2,34),(4,33); // 3 Inserciones en un insert
INSERT INTO a VALUES (8,26),(6,29); // 2 Insercciones en un insert
UNLOCK TABLES;

--- Fin del código ---

Más info en la documentación de MySQL:

http://dev.mysql.com/doc/refman/5.0/es/insert-speed.html

4ndr3s.v:
buen dia  este  es mi primer  post   en este foro y espero que sean muchos mas en aporte y solucion de inquietudes.  en este caso tengo un problema con un codigo   que no me conecta  la base de datos   helpp llevo tres dias   revisando el codigo y no encuentro el error


este es el codigo una ayuda por favor

<% PHP
   include ("config.inc.php");

   Encabezado();

if(empty($redirect))
   $redirect = "./";

   switch($action){

      case 'Iniciar':

         $userqry = db_query("select * from Usuario Where User = '$login' AND Password = password('$clave') AND Autorizado = 'S'");
         
         $limpiaqry = db_query("delete from Sesion where DATE_ADD(Inicio, INTERVAL 10 MINUTE)<now()");
               
               if (db_num_rows($userqry)!= 0){

                  $datos_user_obj = db_fetch_object($userqry);

                     
                  $Usuario=array("Nivel"=>$datos_user_obj->Nivel,"IDUsuario"=>$datos_user_obj->IDUsuario,"Nombre"=>$datos_user_obj->Nombre,"User"=>$user,"flag"=>"TRUE");

                     $usuariosave= addslashes(serialize($Usuario));

                     $newsesion=md5(uniqid(date("Y-m-d",time())));

                     $fecha=date("Y-m-d H-i-s",time());

                     $guardarqry = db_query("insert into Sesion values ('$newsesion','$fecha','$usuariosave')");

                     setcookie("COOKIE_SESION",$newsesion);
                        

                     header("Location: $redirect");
                  
                     
               }//if ($pass!=$userdata->password)
               else
                  $ERROR="Verifique nombre de usuario y clave";

      break;//Case 'Iniciar'

      case 'LogOut':

            setcookie("COOKIE_SESION"); //Independiente se libera el cookie

            $borrarqry = db_query("delete from Sesion where IDSesion='$COOKIE_SESION'");

            $err=1;

            $ERROR="Sesion terminada correctamente";


      break; //case 'Logout'

   }//switch($action)

%>PHP_SELF%.



 :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\   

Navegación

[0] Índice de Mensajes

Ir a la versión completa