Quijost
Webmaster => Desarrollo Web => Mensaje iniciado por: shakaran en Mayo 10, 2010, 18:41:50 pm
-
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:
<?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
?>
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:
<?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
?>
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:
<?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());
?>
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:
<?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>';
}
?>
Cualquier duda, mejora o comentario son bienvenidos.
-
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.
-
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:
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;
Más info en la documentación de MySQL:
http://dev.mysql.com/doc/refman/5.0/es/insert-speed.html
-
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%.
:-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\ :-\