Foros del Web » Programando para Internet » PHP »

reemplazar datos mysql

Estas en el tema de reemplazar datos mysql en el foro de PHP en Foros del Web. Tengo el siguiente error : Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/sebastia/public_html/prueba/_php/proceso-textos.php on line 13 el codigo es este: ...
  #1 (permalink)  
Antiguo 18/06/2011, 11:18
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
reemplazar datos mysql

Tengo el siguiente error :


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/sebastia/public_html/prueba/_php/proceso-textos.php on line 13


el codigo es este:

<?php

$texto=$_POST["texto"];
$idioma=$_POST["idioma"];
$tipo=$_POST["tipo"];


include ("../configuracion/conexion-usuario.php");
include("conexion.php");
$orden="insert into textos (texto, tipo, idioma) values ('$texto', '$tipo', '$idioma')";
$rs=mysql_query($orden, $conn) or die(mysql_error());

if (mysql_num_rows($rs)!=0 or die(mysql_error())){
$orden2="UPDATE textos SET texto = REPLACE";
$orden2="(texto, '$texto')";
$rs2=mysql_query($orden2, $conn) or die(mysql_error());
echo $rs;
}


?>
Debo tener algun error en el codigo.
Lo que quiero hacer es que me reemplaze el texto que esta en $texto por el texto que esta en el campo texto. Ya hay un texto en la base de datos pero me pone el error mas arriba.


Saludos! y gracias!
  #2 (permalink)  
Antiguo 18/06/2011, 11:34
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: reemplazar datos mysql

esta linea no te da ningun error??
Código PHP:
Ver original
  1. $rs=mysql_query($orden, $conn) or die(mysql_error());
ahora en esta linea
Código PHP:
Ver original
  1. if (mysql_num_rows($rs)!=0 or die(mysql_error())){
no deberia de haber depuracion ya que depuraste la consulta y ahi es donde debes corregir errores si se te indican, por lo tanto quedaria
Código PHP:
Ver original
  1. if (mysql_num_rows($rs) !=0 ){
saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 18/06/2011, 11:44
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: reemplazar datos mysql

Si hice eso y me sigue dando el mismo error el tema es que no me reemplaza el dato en la base de datos, me lo agrega.
  #4 (permalink)  
Antiguo 18/06/2011, 12:05
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: reemplazar datos mysql

el mysql_num_row necesita un resource y el insert no devuelve un resource, sino true si lo inserto, sino lo inserto por algun error la depuracion te lo da, entonces cual es el error?? que estas pasando un parametro incorrecto, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 18/06/2011, 12:17
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: reemplazar datos mysql

Buenas, no estoy muy puesto en el set de funciones mysql_*, pero creo carlos que mysql_query devuelve un resource, lo que creo que no te sirve sebacomas es mysql_num_row, en tu caso al ser INSERT deberías utilizar mysq_affected_rows.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 18/06/2011, 12:22
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: reemplazar datos mysql

master cuando haces un insert el mysql_query te devuelve true
Código PHP:
Ver original
  1. <?php
  2. $link = mysql_connect('host','user','pass');
  3. mysql_select_db('prueba'); 
  4. var_dump(mysql_query("INSERT INTO prueba VALUES('carlos','belisario')"));
  5. ?>
has esta prueba y ve lo que da, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 18/06/2011, 12:36
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: reemplazar datos mysql

Acabo de mirar la doc y tienes razón carlos, para mi esas funciones es como si no existieran :P. lo que me llama la atención es que en vez de decir mixed dice resource en la signatura, hay que leer Valores devueltos para verlo.
__________________
http://es.phptherightway.com/
thats us riders :)
  #8 (permalink)  
Antiguo 18/06/2011, 12:41
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: reemplazar datos mysql

Me voy a explicar mejor, porque creo que el error viene por otro lado

Voy a poner los campos entre parentesis para que se entienda mejor:

en mi base de datos hay una tabla que se llama textos, luego un campo (texto) otro (tipo) y otro (idioma), cuando yo inserto a la base de datos en el caso que (tipo), e (idioma) tengan el mismo valor que lo reemplaze tambien con el nuevo texto, o sea siempre va a ver un valor distinto para (tipo) e (idioma), porque sino lo reemplaza.

El problema para mi esta en la forma de reemplazar esos datos en la base de datos ya que en vez de reemplazar me agrega otra fila con el mismo valor de (tipo) e (idioma), y eso es justo lo que quiero reemplazar..

Saludos!!
  #9 (permalink)  
Antiguo 18/06/2011, 12:44
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: reemplazar datos mysql

si yo se últimamente para mi tampoco normalmente cuando se trabaja con un fw no se utilizan yo cuando menos utilizo PDO con una clase que tengo que hereda de esta y lo que hago es llamar metodos me facilita todo, pero como tambien hace poco cuando no trabajaba practicamente nada OOP me toco darme golpes duro con estas funciones hay cosas que todavia las tengo frescas, de echo me pusiste a dudar y hice esa prueba, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #10 (permalink)  
Antiguo 18/06/2011, 12:46
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: reemplazar datos mysql

sino quieres agregar una fila (registro) a tu tabla de mysql no debes hacer un insert, debes hacer es un update a la fila que desees
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #11 (permalink)  
Antiguo 18/06/2011, 12:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: reemplazar datos mysql

@sebacomas, estas haciendo siempre un INSERT independientemente de si existe o no un registro con las características que mencionas, en todo caso primero deberías hacer un SELECT y en base a esto un INSERT o UPDATE

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 18/06/2011 a las 12:53
  #12 (permalink)  
Antiguo 18/06/2011, 13:21
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: reemplazar datos mysql

Ok, entiendo, lo que hice es lo siguiente:

<?php

$texto=$_POST["texto"];
$idioma=$_POST["idioma"];
$tipo=$_POST["tipo"];


include ("../configuracion/conexion-usuario.php");
include("conexion.php");
$orden="SELECT * FROM textos WHERE idioma='$idioma' AND tipo='$tipo'";
$rs=mysql_query($orden, $conn);

if (mysql_num_rows!=0){
$orden2="UPDATE textos SET texto = '$texto'";
$rs2=mysql_query($orden2, $conn) or die(mysql_error());
}

?>


Igual no me lo reemplaza!
  #13 (permalink)  
Antiguo 18/06/2011, 13:37
 
Fecha de Ingreso: mayo-2010
Mensajes: 414
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: reemplazar datos mysql

Ya encontre el error al final me quedo así!

<?php

$texto=$_POST["texto"];
$idioma=$_POST["idioma"];
$tipo=$_POST["tipo"];


include ("../configuracion/conexion-usuario.php");
include("conexion.php");
$orden="SELECT * FROM textos WHERE idioma='$idioma' AND tipo='$tipo'";
$rs=mysql_query($orden, $conn);

if (mysql_num_rows($rs)!=0){
$orden2="UPDATE textos SET texto = '$texto' WHERE idioma='$idioma' AND tipo='$tipo'";
$rs2=mysql_query($orden2, $conn) or die(mysql_error());
}else {
$orden2="INSERT INTO textos (texto, tipo, idioma) values ('$texto', '$tipo', '$idioma')";
$rs2=mysql_query($orden2, $conn) or die(mysql_error());
}


?>


GRACIAS POR LAS RESPUESTAS!!!

Etiquetas: mysql, reemplazar
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 22:16.