Uno de las partes esenciales de la programación avanzada con PHP es la conexión a una base de datos, en este tutorial veremos con lujo de detalles como conectar PHP a una base de datos MySQL en un servidor local.
Para poder conectar PHP con una base de datos, en este caso MySQL, lo primero que debemos tener es propiamente la base de datos, para eso podemos utilizar un servidor local o bien un hosting ya sea de pago o gratuito, en esta ocasión aprenderemos a conectar PHP con MySQL en un servidor local.
Servidor Local
Para tener nuestro propio servidor en nuestra computadora, basta con descargarnos cualquiera de estas herramientas:
Estos son paquetes que contienen Apache, MySQL y PHP (+PHPMyAdmin), si prefieres puedes instalar cada uno de estos componentes por separado.
Elegiremos en esta ocasión XAMPP para realizar las pruebas ya que es multiplataforma y es una de las herramientas mas faciles de usar, cuenta con lo siguiente:
- Apache 2.2.21
- MySQL 5.5.16
- PHP 5.3.8
- phpMyAdmin 3.4.5
- FileZilla FTP Server 0.9.39
- Tomcat 7.0.21 (with mod_proxy_ajp as connector)
Descargamos xampp de su sitio oficial y lo instalamos. La instalación no tiene ningún truco, así que no me desviaré del tema principal, pero si tienen alguna duda simplemente dejen un comentario y con gusto les respondere.
Una vez instalado, iniciamos el servidor como indica la imagen de abajo:
Para acceder al servidor simplemente abrimos nuestro navegador preferido y escribimos en la barra de direcciones «localhost» o «127.0.0.1» (sin comillas) y nos saldrá algo parecido a esto.
Para crear una base de datos, accedemos a «phpMyAdmin» que se encuentra en la barra lateral y luego simplemente le damos clic a «Base de Datos» y elegimos un nombre para nuestra BD, en este caso utilizaremos el nombre de «conectar» (sólo para el ejemplo).
Luego creamos una tabla a la cual le llamaremos «libros» y le asignaremos 4 campos, no pasaré a explicarles detalladamente la configuración ya que el tutorial no se enfoca en eso, pero haremos lo siguiente:
Una aclaración, en el ID chequearemos la opción de A_I (autoincrement) que se encuentra mas a la derecha, esto es para que este campo se rellene de forma automatica cada vez que se ingresa algo a la tabla.
Para crear un usuario, nos fijamos en la barra lateral izquierda y buscamos «phpMyAdmin» luego de darle clic nos ingresamos a la base de datos que acabamos de crear y buscamos en la barra superior la opción «privilegios», allí configuramos lo siguiente:
En la parte de abajo de la configuración en privilegios tildamos «marcar todo».
También podríamos utilzar el usuario root que viene por defecto, pero trabajaremos con un nuevo usuario para que se entienda mejor.
Hasta aqui hemos estado trabajando con el servidor y la base de datos, ahora viene el codigo PHP para la conexion a la base de datos, hay varias formas de hacerlo, pero esta vez crearemos un código un poco sencillo, cuyo único objetivo es la de poder conectarnos a una base de datos.
Este es el código necesario para lograr eso, en los comentarios de las lineas sabrán como funciona cada parte del script:
conexion.php
<?php
$servidor = "localhost"; // El servidor que utilizaremos, en este caso será el localhost
$usuario = "prueba"; // El usuario que acabamos de crear en la base de datos
$contrasenha = "prueba123"; // La contraseña del usuario que utilizaremos
$BD = "conectar"; // El nombre de la base de datos
/*
Aquí abrimos la conexión en el servidor. Normalmente se envian 3 parametros (los datos del servidor, usuario y contraseña) a la función mysql_connect, si no hay ningún error la conexión será un éxito El @ que se ponde delante de la funcion, es para que no muestre el error al momento de ejecutarse, ya crearemos un código para eso
*/
$conexion = @mysql_connect($servidor, $usuario, $contrasenha);
/*
Aquí preguntamos si la conexión no pudo realizarse, de ser así lanza un mensaje en la pantalla con el siguiente texto "No pudo conectarse:" y le agrega el error ocurrido con "mysql_error()"
*/
if (!$conexion) {
die('<strong>No pudo conectarse:</strong> ' . mysql_error());
}else{
// La siguiente linea no es necesaria, simplemente la pondremos ahora para poder observar que la conexión ha sido realizada
echo 'Conectado satisfactoriamente al servidor <br />';
}
/*
En esta linea seleccionaremos la BD con la que trabajaremos y le pasaremos como referencia la conexión al servidor. Para saber si se conecto o no a la BD podríamos utilizar el IF de la misma forma que la utilizamos al momento de conectar al servidor, pero usaremos otra forma de comprobar eso usando die().
*/
mysql_select_db($BD, $conexion) or die(mysql_error($conexion));
?>
index.php
<?php
include ("includes/conexion.php");
?>
Con la funcion include de PHP incluiremos el archivo conexion.php que se encuentra en la carpeta includes, esto sirve para que solo tengamos que escribir el código de conexión una sola vez y tambien para cuando cambiemos de servidor o de usuario hacer las modificaciones en el archivo de conexion afectara a todo el proyecto.
Estos archivos los tenemos que guardar en la carpeta htdocs dentro del servidor local, buscamos la carpeta xampp luego la carpeta htdocs y allí crearemos otra carpeta a la que llamaremos «prueba»:
C:\xampp\htdocs\prueba
Quedaría de la siguiente forma el directorio:
Luego simplemente abrimos nuestro directorio en el navegador y vamos a http://localhost/prueba
De lo contrario podría aparecer esto (esto es porque la base de datos esta mal escrita):
Y esto es porque el usuario o la contraseña están mal escritas.
En unos pocos minutos ya tenemos corriendo un servidor en nuestra propia computadora, creamos una base de datos, una tabla y un usuario ademas de esto creamos un pequeño código en PHP para conectarnos a la base de datos, esto es algo sencillo pero fundamental al momento de empezar en el mundo de la programación PHP.
Juan Carlos Alvarez Lemus dice
Es bueno saber que alguien se toma el tiempo para postear esto, ya que ayudaras a agilizar el flujo a los que inician php y mysql, gracias por todo y me alegro en ser el primero en comentar….estaremos en espera de mas. jeje…
Amadeo Govoni dice
Les comento que sin querer después de una larga busqueda he encontrado un programa llamado Navicat Premium. Es excelente para la comunicación con la base de datos. Yo estoy trabajando la base de datos en excel y después la subo con el programa. De todas maneras muy bueno el post.
Juan Carlos Alvarez Lemus dice
Navicat es bueno, tambien puedo agregar que pueden probar implementar el uso de SqlYog en cualquiera de sus versiones es bueno, y AquaDataStudio son buenos manejadores de base de datos, saludos.
Guillermo dice
Gracias por el trabajo q te tomaste.
Soy nuevo en PHP , quería instalar esto para comenzar con un video tutorial de PHP y MySQL, pero tengo un problema: segui todos los pasos al pie de la letra, lo hice 2 veces y me da error de usuario o contraseña: ‘No pudo conectarse: Access denied for user ‘prueba’@’localhost’ (using password: YES)’
Escribi inclusive otro usuario y contraseña y lo modifiqué tambien en el codigo de conexion.php y me da el mismo error.
Gracias.-
gustavodbs dice
Hola, prueba lo siguiente:
Al momento de crear el usuario en la opción «servidor» elige «local» y escribe en al campo de texto «localhost», si no funciona entonces prueba a usar el usuario por defecto que es root.
En conexion.php edita lo siguiente:
$usuario = «root»; //El usuario por defecto
$contrasenha = «»; //sin contraseña
Cuéntanos como te fue.
Guillermo dice
Funcionó !!!.. Qué felicidad despues de estar casi 2 horas anoche jajajaj.
El problema era q yo seguia la primera imagen que pusiste de la captura de pantalla de «Agregar nuevo usuario» donde no tenias seleccionado «Servidor: Local».. ahora que la cambiaste está perfecto. Muchísimas gracias.
Sólo quería hacerte una par sugerencias simples para facilitar la configuración a los «novatísimos» como yo, que la neurona nos queda rebotando en el cerebro cuando tenemos q tomar una decisión sin conocimiento:
– Al crear la base de datos, al lado del nombre hay un desplegable q tiene seleccionada la opción «cotejamiento».. no sabia si omitirla o no, pero por las dudas seleccioné ‘utf8_general_ci’.
– Aunque es obvio q el usuario y contraseña deben ser los mismos q se incluyen en el archivo ‘conexion.php’, no estaría demás aclarar que la contraseña que usás es «prueba123».
Muchas gracias otra vez, no es fácil encontrar tutoriales en español actualizados. Abrazo desde Brasilia.
Alejandro dice
Gracias mil, justo estaba buscando esto y me lo encontré de casualidad en tu página que ya tenía en FF. Muy útil!
rutame dice
Buenos días:
Me gustaría saber como puedo realizar una consulta que me muestre tres registros de una vez. Hasta ahora yo hago lo siguiente:
$sql = mysql_query("SELECT * FROM registros LIMIT 9");
while($reg = mysql_fetch_array($sql){
echo "Este es el registro: ".$reg['nombre'];
}
Con esto me saca un registro cada vez hasta que llega al final de los mismos. Me gustaría poder sacarlos en grupos de 3 por ejemplo. Lo quiero para poder hacer un «slideshow» con easyslider en el que muestre 3 registros, haga el efecto de cortina y muestre otros 3. No se si me habré explicado bien… en mi web se ve un slideshow en el que solo se muestra uno cada vez.
Muchas gracias
gustavodbs dice
Hola, generalmente los sliders «estiran» las imágenes desde una carpeta y todas se ejecutan en el lado del cliente, es decir, en el navegador. Con PHP se estaría ejecutando en el lado del servidor lo que significa que cada vez que quieres mostrar 3 registros, luego otros 3 tendrías que mandar la orden al servidor.
En tu código PHP para obtener 3 registros, luego otros 3 sería de la siguiente manera:
$query = «SELECT * FROM registros LIMIT $comienzo_del_registro, $cantidad_del_registro»;
$result = mysql_query($query, $dblink);
if ($result){
while ($row = mysql_fetch_assoc($result)){
echo «Este es el registro: «.$reg[‘nombre’];
}
}else{
echo «No se encontró ningun registro»;
}
Donde el comienzo se refiere a partir de que registro empezará a leer y la cantidad, cuantos registró leerá.
Pero te recomendaría que visites este tutorial sobre como implementar un slider en tu web, podría ayudarte mas.
https://tursos.com/tutoriales/javascript/como-implementar-nivo-slider-en-tu-pagina-web
Saludos!
Esparaquia dice
que tal?
Me ha surgido una duda, ¿como puedo crear más usuarios sin necesidad de acceder a la base de datos como cual? es decir, me gustaría crear una pagina donde se registren, creando un nombre de usuario y almacenando su constraseña, ¿como puedo hacer esto?
De antemano gracias.
Esparaquia dice
Por cierto me arroja este erro al intentar hacer el ejemplo anterior:
Warning: include(includes/conexion.php) [function.include]: failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/prueba2/index.php on line 2
Warning: include() [function.include]: Failed opening ‘includes/conexion.php’ for inclusion (include_path=’.:/Applications/XAMPP/xamppfiles/lib/php:/Applications/XAMPP/xamppfiles/lib/php/pear’) in /Applications/XAMPP/xamppfiles/htdocs/prueba2/index.php on line 2
gustavodbs dice
Esparaquia: en cuanto al registro de usuarios mediante un formulario te va a ser de gran ayuda esto:
Sistema de Registros de Usuarios con PHP
https://tursos.com/tutoriales/php/como-hacer-un-sistema-de-registro-de-usuarios-en-php-con-mysql
En cuanto al error, tienes que asegurare que el archivo conexion.php se encuentre dentro de la carpeta includes y que en tu index.php se encuentre al mismo nivel que la carpeta includes. Fíjate en la imagen de las carpetas para guiarte, por el error que has puesto creo que ese sería el problema, si no es así vuelve a comentar.
marco dice
hola que tal yo tngo una pregunta con eso de la carpeta include se tiene que crear? a mi no me sale en htdocs
Esparaquia dice
De lujo mi buen, gracias, tenia un error en el arbol de direcciones, gracias mi buen, muy recomandable el sitio a twitearlo recomendado al 100, gracias
José M. Solval dice
Esparquia, saludos, lo que pasa es que no has creado dentro de la carpeta otra carpeta, valga la renundancia, llamada includes e incluyes ahi el archivo conexion.php o simplemente en el archivo index.php en la segunda linea de código quita la palabra includes y la diagonal (includes/) y ya esta, y no olvidando tambien el agradecimiento a gustavodbs por esos tutoriales tan buenos que ayudan a los novatos como yo, saludos gustavodbs.
JoseO dice
Excelente articulo. Has hecho lo mismo en servidores pago? Tengo dos sitios diferentes y necesito que una aplicacion que tengo en los dos sitios, accesen los datos que estan en uno solo. Es posible en este caso? sabes como?
Josue Ochoa dice
Si los dos sitios estan en 2 servidores distintos no creo que sea posible.
teka dice
Buenass,
No puedo conectarme a Apache ni a MySQL, es decir no puedo hacer ni el primer paso.. :s tengo que hacer alguna instalacion mas antes?
Al iniciar la instalacion he seleccionado la opcion de descargar los dos servidores pero al terminar la instalacion me ha salido un mensaje en donde decia que no se habian podido instalar los dos servidores pero si el programa..
Que tengo que hacer para conectarlos?
Muchas gracias
Josue Ochoa dice
Tienes que instalar uno de los programas que se menciona en la lista, estos programas son paquetes en los cuales ya viene Apache y MySQL, no tienes que preocuparte mas en estos si instalaste uno de los paquetes, lograste instalar uno?
Maria dice
Buenos días, primero quiero felicitar a todo el grupo de este maravilloso sitio por tan excelentes tutoriales, me han servido mucho para el aprendizaje ya que son muy explicativos y se pueden llevar a la práctica, ustedes son lo mejor, sigan así.
He realizado el ejercicio y me funciona todo correctamente. Me han encargado modificar un sitio web, he descargado el sitio y lo tengo en la carpeta clasificados que está en htdocs. Mi problema es que no está conectando con la base de datos y algunos archivos los muestra con errores. Así es como tengo configurado:
$cnfg[‘dbHost’] = «localhost»;
$cnfg[‘dbUser’] = «root»;
$cnfg[‘dbPass’] = «prueba»;
$cnfg[‘dbName’] = «ventas»;
deHome es el camino hacia el archivo index, el archivo index es main.php, no se cual ruta está correcta la puse de las dos maneras
$cnfg[‘deHome’] = «localhost/clasificados/main.php»;
$cnfg[‘deHome’] = «main.php»;
Luego en deDir – path to classifieds directory, no estoy segura si es la ruta correcta, en el código original la ruta es la url del sitio, pero como estoy en local , esta sería la ruta correcta? o me faltaría agregar algo
$cnfg[‘deDir’] = «http://localhost/clasificados//»;
En el archivo de conexión tengo lo siguiente:
$hostname_bd = «localhost»;
$database_bd = «ventas»;
$username_bd = ‘root’;
$password_bd = ‘prueba’;
$bdconnect = mysql_connect($hostname_bd, $username_bd, $password_bd) or trigger_error(mysql_error(),E_USER_ERROR);
Agradezco su amable orientación.
luis75dpi (@luis75dpi) dice
Utilize el MAMP(Mac) y no pude conectarme al localhost… nose si sea por que tenga la versión de prueba y por eso no me deja entrar.
Josue Ochoa dice
http://localhost:8888 te funciona?
Leticis dice
Yo tengo una pregunta, buenas tardes,
Ya llegue hasta agregar el nuevo usuario pero no se donde pegar lo de conexión y el index, no se que ventana o donde pegarlo que hago? gracias
Pedro dice
Son Geniales señores, toda la ayuda y la que se sigue generando, felicitarlos a todos es poco.
Realmente haciendome eco de : «No existen preguntas tontas, sino tontos que no preguntan.»
Seguiré preguntando por éste mundo.
Felicidad a todos.}
Pedro
Bianca dice
Holaaa, mira yo quiero descargar uno de esos servidores pero el problema es que ya tengo instalado SQL Server Managment Studio y no se si a la hr de instalar Mysql tenga algun problema, segun sabia se tenia que modificar el localhost y ponerle localhost:8081 o algo asi. Por favor podrian orientarme respecto a este tema?? Muchas graciaas 😀
Ecuador en Venta dice
Gracias amigo, lo de la creación de la base de datos me costó un poco entender, creo que es porque tengo otra versión del Xampp y varía un poco…
geovanni dice
hola hace poco instale WampServer y xampp pero con ningumo de los 2 pude conectarme a la base de datos sera que tengo que configuarr php?
geovanni dice
no m epuedo conectar al localhost no puedo ver las bases de datos que puedo hacer al respecto
Mark Moran dice
No logro ejecutar codigo php en MAMP, configuracion correcta con Joomla, y un simple codigo php como «Hola Mundo WTF!» no se mira…
Documento guardado en httpdocs, etc, etc, en mi MacBookPro
Servidores corren correctamente y joomla Ok.
Que pasa con el codigo php en este caso? o version de Apache? etc.
Miguel dice
Hola, he instalado el programa xamp pero cuando clikeo sobre myphadmin me sale unerror que no se puede conectar:
«MySQL ha dicho: #2002 –
El servidor no está respondiendo (o el zócalo local al servidor MySQL no está configurado correctamente).
La conexión para controluser, como está definida en su configuración, fracasó»
Por favor ayuda , llevo mucho tiempo tratando de realizar esta prueba.Gracias.
barrientos.stc@gmail.com
Wilson dice
Hola amigos necesito ayuda tengo un problema mi pagina web con la conexion a mysql me sale un error: Error al conectarse a mysql: Host ’50-87-5-200.unifiedlayer.com’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’
y ya realice un archivo de prueba con otra base de datos y me sale el mismo alguien me podria ayudar…
FABIAN dice
Hola: Buenos dias, quisiera que alguien me saque de dudas… necesito instalar mi sistema de php en un servidor
– Instalo XAMPP y toda la carpeta de archivos fuente incluyendo la base datos? o existe otra manera para no copiar los archivos fuente
Thomasgiz dice
Приветик всем, я тут новенький «352»
https://thc-cbd.pl/ dice
W tym sklepie można kupić nasiona konopi z dostawą do Polski.
Znajdziesz autopwitnące odmiany konopi na każdy gust!
https://thc-cbd.pl/
Unblocked dice
Great info. Lucky me I came across your blog by chance (stumbleupon).
I’ve book marked it for later!
Unblocked dice
For most recent information you have to visit world wide web and on the web I found this website as a most excellent web page for latest
updates.
unblocked dice
Everything is very open with a precise explanation of the issues.
It was definitely informative. Your website is useful.
Many thanks for sharing!
abraham dice
buenas tardes, hice los pasos como dice aquí, pero al momento de probar me salio este error:
No pudo conectarse:» . mysql_error()); }else{ echo «Conectado satisfactoriamente al servidor
«; } mysql_select_db($BD, $conexion) or die(mysql_error($conexion)); ?>
no se que pueda ser