PDA

Ver la Versión Completa : Conexion de PHP a MySQL


Alejandro73
06-12-2013, 19:28:43
Estimados

Tengo la siguiente duda, realizo una conexion a MySql desde php de la siguiente manera


$conexion=mysql_connect("valor_host", "valor_usuario", "valor_contraseña") or die ('No podemos conectar a la BD porque: ' . mysql_error());
mysql_select_db ("nombre_bd");

session_start();
$sql = "select * from nombre_tabla where campo1=varlor_campo1";
$result=mysql_query($sql);

if (! $result)
{
echo 'La consulta SQL contiene errores '.mysql_error();
exit();
}
else
{
echo 'La consulta SQL NO contiene errores';
exit();
}


Lamentablemente siempre me devuelte lo siguiente:

"La consulta SQL contiene errores Access denied for user ''@'localhost' (using password: NO)"

Si alguien tiene alguna idea de que estoy haciendo mal.

Desde ya muchas gracias por sus ayudas.

Ñuño Martínez
12-12-2013, 12:06:01
No te recomiendo que hagas lo que haces en la primera línea de tu código. Puede funcionar, sí, pero si el intérprete PHP está compilado de forma que no trunque las expresiones booleanas (podría ser) te verás en problemas. También podría pasar que mysql_connect devuelva un valor diferente de false pero que sea interpretado como tal en la expresión, y de nuevo te verás en problemas. Y lo peor de todo: es difícil de leer, y PHP ya es bastante críptico por sí sólo como para encima complicarlo más. De veras que no entiendo por qué lo hacéis.

En cuanto a tu pregunta, te recomiendo que uses la variable $conexion al seleccionar la base de datos y almacenes el resultado de dicha selección para poder usarla al hacer la consulta. También te recomiendo que compruebes cada paso ya que el error podría no estar en la consulta (que es lo que sospecho). Es decir:

<?php
$Conexion = mysql_connect ("valor_host", "valor_usuario", "valor_contraseña");
if ($Conexion === false)
die ('No se pudo conectar con el gestor de bases de datos: ' . mysql_error ());

$BaseDatos = mysql_select_db ("nombre_bd", $Conexion);
if ($BaseDatos === false)
die ('No pudo seleccionarse la base de datos: '.mysql_error ());

session_start();
$sql = "select * from nombre_tabla where campo1=varlor_campo1";
$Consulta = mysql_query ($sql, $BaseDatos);

if ($Consulta === false)
die ('La consulta SQL contiene errores '.mysql_error ());
elseif ($Consulta === true)
echo 'La consulta SQL fue un éxito.';
else
echo 'La consulta SQL devolvió valores.';

Observa el uso del operador "===" en vez del operador "==". Así garantizas que la comparación es exacta y que el intérprete no realizará ningún tipo de conversión de datos. Lo cierto es que en este caso es redundante, pero es una buena costumbre, sobre todo para la comprobación del resultado de mysql_query.

Alejandro73
12-12-2013, 13:02:38
Gracias por responder, pero sin realizar ningun cambio en el codigo ya esta funcionando.