Foros del Web » Programando para Internet » PHP »

Error Query was empty en Mysql

Estas en el tema de Error Query was empty en Mysql en el foro de PHP en Foros del Web. Hola Tengo un problema con Mysql, y es que me sale un error que es el siguiente: Problema en MySQL: Error Query was empty en ...
  #1 (permalink)  
Antiguo 11/06/2003, 09:28
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 14 años, 6 meses
Puntos: 1
Error Query was empty en Mysql

Hola

Tengo un problema con Mysql, y es que me sale un error que es el siguiente:

Problema en MySQL: Error Query was empty en la consulta

Que me impide conectar con la base de datos para mostrar los resultados de mi consulta.

Os adjunto el codigo a ver si podeis echarme un cable...

Gracias

**************clase BaseDeDatos y Consulta************



<?php

class BaseDeDatos {
// Datos de la BD
var $host;
var $bd;
var $usuario;
var $password;
var $link;

/************************************************** *************************/
/* public: Constructor.
* bd: nombre de la base de datos.
* host: direccion de la maquina donde esta instalado MySQL.
* usuario: nombre del usuario con permiso para acceder a dicha BD.
* password: contrase&ntilde;a del usuario.
*/
function BaseDeDatosFunc($bd, $host,
$usuario, $password) {
$this->bd = $bd;
$this->host = $host;
$this->usuario = $usuario;
$this->password = $password;
// Conectamos con la BD
$this->link = @mysql_connect($this->host, $this->usuario, $this->password)
or die("<b>Problema en MySQL:</b> Error al conectar con la base de datos");
@mysql_select_db($this->bd, $this->link)
or die("<b>Problema en MySQL:</b> Error al conectar con la base de datos");
}
}






class Consulta {
var $id;

/************************************************** *************************/
/* public: Constructor.
* sql: Texto de la consulta.
*/
function Consulta($sql) {
$this->id = @mysql_query($sql) or
die("<b>Problema en MySQL:</b> Error <i>" . mysql_error() .
"</i> en la consulta <i>$sql</i>"); AQUI ES DONDE ME SALE EL ERROR
}

/************************************************** *************************/
/* public: filas_afectadas
* Devuelve el numero de filas afectadas por la consulta
*/
function filas_afectadas() {
return @mysql_num_rows();
}

}

?>


***************FIN CONSULTA*******************

************************************************** ************************************************** ****



***************buscador.php********************


<html>
<body>
<?php

if (empty ($_POST['buscar'])){
echo "Debe especificar una cadena a buscar";
echo "<p>Debe especificar una cadena a buscar</p> \n";
echo "<p><a href='../index.htm'>Volver</p> \n";
echo "</html></body> \n";
exit;
}
/**************
COMIENZA LA CLASE BASEDEDATOS Y CONSULTA
**************/

include "./db.inc.php";



/************************************************** ***
TERMINA LA CLASE BASEDEDATOS Y CONSULTA
************************************************** ***/


$base = new BaseDeDatos();
$base->BaseDeDatosFunc("envertical", "localhost", "nobody","" );
$sql = "SELECT * FROM Socueva WHERE nombre LIKE '%{$_POST['buscar']}%' ORDER BY id";
$consulta = new Consulta($sql);
if ($consulta->filas_afectadas() > 0) {
echo "<table border = '1'> \n";
//Mostramos los nombres de las tablas
echo "<tr> \n";
echo "<td>id</td>\n";
echo "<td>nombre</td>\n";
echo "</tr> \n";
while ($fila = $consulta->filas_afectadas()) {
echo "<tr> \n";
echo "<td>".$fila["id"]."</td> \n";
echo "<td>".$fila["nombre"]."</td> \n";
echo "</tr> \n";
}

echo "<p><a href='../index.htm'>Volver</p> \n";
echo "</table> \n";
}
else {
echo "<p>¡No se ha encontrado ningún registro!</p>\n";
echo "<p><a href='../index.htm'>Volver</p> \n";
}
?>
</body>
</html>

***********************fin buscador.php**************

Última edición por Operadormail; 11/06/2003 a las 10:47
  #2 (permalink)  
Antiguo 11/06/2003, 09:46
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Tu problema es que esta linea esta mal:
Código PHP:
$sql "SELECT * FROM Socueva WHERE nombre LIKE "%$_POST['buscar']%" ORDER BY id"
El problema es que dentro de una cadena delimitada por " no puedes meter ". Deberias usar '. Y luego debes usar {} para poner un array. Seria:
Código PHP:
$sql "SELECT * FROM Socueva WHERE nombre LIKE '%{$_POST['buscar']}%' ORDER BY id"
Tal como lo tienes tu puesto, estas calculando el modulo de la division de la cadena "SELECT * FROM Socueva WHERE nombre LIKE " entre $_POST['buscar'], y calculando el modulo de este resultado por la cadena " ORDER BY id" . Posiblemente error de sintaxis o un valor NULL.

Deberias revisar el tema de strings (cadenas) del manual (www.php.net). En ese tema explican este tipo de cosas y sus soluciones.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 11/06/2003, 10:54
 
Fecha de Ingreso: junio-2003
Mensajes: 778
Antigüedad: 14 años, 6 meses
Puntos: 1
OK

Resuelto el error de Query was empty

Pero ahora no me encuentra ningun registro en la consulta...
Y escribo literalmente el contenido del primer registro del campo "Nombre"...

Puedes decirme por que ??

Un saludo

Hola otra vez

Ahora me da error al conectar con la base de datos...

Tampoco se a que es debido...

Podrias revisar el codigo que postee antes (corregidos los errores)

Gracias por la paciencia
  #4 (permalink)  
Antiguo 11/06/2003, 15:12
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bueno, un consejo: mientras estes desarrollando tus scripts, quita los @. Lo unico que hacen (como sabras) es evitar que se visulicen los mensajes de error que te manda PHP. Asi que quita todos. Si te da error al conectarte a la BD unas veces si y otras no, no es problema de tu codigo, sino de el servidor de BD. Y por ultimo, bajate el manual oficial de PHP (www.php.net) o consultalo online para ver la sintaxis y parametros necesarios de las funciones. Asi podrias ver que te falta un parametro en tu llamada a mysql_num_rows().

Suerte.

PD: El manual es tu amigo. Y seria mejor todavia si usase un IDE (editor) como el Maguma, que tiene integrada la ayuda de PHP y te muestra la pagina del manual solo con darle F1 estando sobre el nombre de la funcion en tu codigo.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:36.