[PHP-MySQL] Como saber si la consulta...

SikorZ

Buenas a ver si alguien puede responderme:

Como saber si la consulta que hago con php-mysql da resultado o no? me explico:

CODIGO PHP

Lo he intentado con affected_rows pero por lo visto es solo para inserts, updates y deletes asi que lo intente con num_rows.

Lo que quiero es que por ejemplo tengo 30 registros y todos ellos comparten Unidad, asi que quiero ver si ya hay X unidad creada para si lo esta no crearla de nuevo y meter los datos de otra tabla que hace referencia a este en $Unidad.

Basicamente, saber si la consulta da algun resultado positivo para luego hacer un IF, ala a ver si alguien sabe=/

LR

$select = "SELECT 'Codgrupo' FROM 'grupo' WHERE 'Codgrupo'=' ".$Unidad." ' ";

$metergrupo = mysql_query($select, $c);

$data=mysql_fetch_row($metergrupo, $c);
$afectadas = mysql_num_rows($metergrupo, $c);

if ($afectadas != 0) {
echo "Columnas afectadas:".$afectadas;

}else{
echo "ninguna columna seleccionada";
}

Si $metergrupo devuelve alguna fila, te hace el echo, sino te dice que no hay ninguna.

editado, faltaban unas comillas

SikorZ

Me da estos errores=/
Warning: Wrong parameter count for mysql_fetch_row() in C:\AppServ\www\PHP\importar.php on line 60

Warning: Wrong parameter count for mysql_num_rows() in C:\AppServ\www\PHP\importar.php on line 61

y ejecuta el comando pero al pasar por el if de nuevo se para el bucle for en el que va dentro todo esto, no se porque=/ por los errores supongo=/

LR

Cierto, se me fue la cabeza

$select = "SELECT 'Codgrupo' FROM 'grupo' WHERE 'Codgrupo'=' ".$Unidad." ' ";

$metergrupo = mysql_query($select, $c);

$data=mysql_fetch_row($metergrupo);
$afectadas = mysql_num_rows($metergrupo);

if ($afectadas != 0) {
echo "Columnas afectadas:".$afectadas;

}else{
echo "ninguna columna seleccionada";
}

el fetch_row y el num_rows los haces del query, no tienes que poner (sentencia, conex)

De todas formas, cuando veas que te da errores, metele en la linea que corresponda un
echo mysql_error(); y asi te dice el fallo que hay

SikorZ

Nada, el mismo error:

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\PHP\importar.php on line 60

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\PHP\importar.php on line 61

ERROR: No se ha podido introducir el registro en la tabla Alumnos.
Posiblemente esto se deba a que la BD no ha sido creada con el entorno de esta misma pagina web

EDIT: $afectadas = mysql_num_rows($metergrupo);
eso no se deberia hacer de $data? el num rows? de todas formas, de las 2 sigue sin irmeY_Y

BLZKZ

estas seguro de tener abierta la conexion a la bbdd?

LR

Es lo que acabo de decirle xD

Si no conectas bien, no hay query, si no hay query, no hay resultado, si no hay resultado --> ERROR

xD

SikorZ

Bueno... la conexion la he hecho al principio del script y no la cierro hasta el final del script y los datos estan bien metidos... asike no se :S

Al final como va? asi?
$metergrupo = @mysql_query($select);
$data=@mysql_fetch_row($metergrupo);
$afectadas = @mysql_num_rows($metergrupo);

o asi?

				$metergrupo = @mysql_query($select);
				$data=@mysql_fetch_row($metergrupo);
				$afectadas = @mysql_num_rows([b]$data[/b]);
LR

El mysql_fetch_row en este caso es lo mismo que mysql_fetch_array.

Lo unico que hace es hacer que puedas leerlo.

El num_rows te dice cuantas filas ha devuelto la consulta.

SikorZ

Da igual, sea como sea, creo que lo que esta mal es el select y aun haciendolo con phpmyadmin y dandolo por bueno me da:

MySQL ha devuelto un valor vacío (i.e., cero columnas). (La consulta tardó 0.0002 seg)

estoy amargao ya Y_Y xDD y encima es el final del proyecto, es lo unico que me faltaY_Y

RaymaN

Prueba quitando todas las comillas simples de la consulta.

SELECT Codgrupo FROM grupo WHERE Codgrupo = $Unidad

LR

Pon el codigo en donde le asignas el valor a $unidad a ver si esque esta ahi el fallo y por eso no te hace bien el select

SikorZ

Me consuela que en MySQL tampoco me devuelve datos:

ERROR 1054 (42S22): Unknown column '2TESI' in 'where clause'
#1054 - Unknown column 'prueba' in 'where clause'

ya no se que hacer xDD sin comillas tambien lo he intentado, asi que supongo el fallo sera ese, pero que hago?:S

EDIT: Nono es que incluso metiendo un dato a mano desde phpmyadmin y consultandolo alli mismo sigue sin irme, vaya cara que le echa... sera problema del phpmyadmin o del mysql? esk ya no se que hacer vaya xDD

LR

prueba a quitarle las comillas al where y poner ' ".$unidad." '

SikorZ

#14 Es que ya lo estoy haciendo sin variables ni nada desde phpmyadmin con datos metidos a mano y de todas las maneras, nada, que no me devuelve ningun resultado xDDD

LR

Aun asi, el problema sigue estando en el select del php.

Si haces un select bien hecho en phpmyadmin y te devuelve 0 columnas no hay problema ya que en el php num_rows = 0 por lo que iria al else.

El problema esta en el select, que no te lo hace bien y no es que te devuelva 0, sino que no te devuelve nada, te devuelve error xD

SikorZ

Pues eso, que directamente no me devuelve nada xD mirad, os copio los datos que he metido, hacedme la consulta alguno, y yo la meto, vereis como no funca xDDD:

Codgrupo Descripcion
2TESI asfasfsa
prueba222 safasf

Copiado del phpmyadmin xDDD, entonces que significa? que mysql me odia y ya esta? xDDDDD porque esk esto es para mear y no echar gota, ya decia yo que llevaba demasiadas horas pa esta tonteria y veo que no es fallo mio=/

LR

Toma

<?php
$cnx= mysql_connect("localhost","root","");
mysql_select_db("lrdod_prueba",$cnx);


$query=mysql_query("SELECT * FROM grupo WHERE codgrupo = 'prueba222'");
$res=mysql_num_rows($query);


if ($res >0)
{
echo "si";
}else{
echo "no";
}
mysql_close($cnx);
?>

acabo de probarlo y funciona xD

El fallo que te daba en phpmyadmin era xq al meter texto, seguramente no lo meterias entre ' ' por lo que no te lo pillaba bien.

Lo unico que tienes que hacer es cambiar prueba222 por la variable que queiras ".$variable." y dentro de las comillas simples

suaveSHOW

Que pruebe a estudiar PHP primero y luego los copy&paste

SikorZ

Lo probe todo y nada, al final lo hice por phpmyadmin xke encontre la opcion y copie el select, ya me va, lo he terminado y todo perfecto, proyecto terminado_ muchas gracias a todos me habeis echado un cablazo=P

#19 no seas estupido que no he copiado de nadie, simplemente pedia ayuda sobre un comando y encima no era ni ese el problema, ¬¬

suaveSHOW

Me refiero a copiarlo de guias y editar.

SikorZ

suaveSHOW es que ya lo he estudiado hijo, pero por ejemplo y aunque no fuera funcional en lo que estaba haciendo yo no conocia el fetch row, yo conocia el array, asi que asi aprendo mas todavia, yo no copio+pego, porque si no lo entiendo no puedo hacer que funcione asike si no estudio no puedo aprender-.-

SeiYa

¿Estás poniendo apóstrofes o comillas simples en los nombres de las tablas?

Si pones SELECT * FROM 'tabla' te va a petar, tu lo que buscas es SELECT * FROM tabla

Usuarios habituales

  • SeiYa
  • SikorZ
  • suaveSHOW
  • LR
  • RaymaN
  • BLZKZ