No responde correctamente a petición de borrar

Iniciado por Servia, 21 Diciembre 2008, 16:30 PM

0 Miembros y 1 Visitante están viendo este tema.

Servia

Código (php) [Seleccionar]
<?
require('conector.php');

$duke=($_SESSION['UsNick']);
$id=($_REQUEST["id"]);

$sql = "DELETE FROM tablaus WHERE usuario='".$duke."' and id='".$id."'";
$result = mysql_query($sql) or die(mysql_error());

if($result) {
echo ' Borrado';
} else {
echo 'Error al intentar borrar ';
}
?>


Cuando hago esto, teoricamente si no encuentra que encajen usuario y id en una misma entrada tiene que dar error, pero igualmente sale borrado. ¿Que hago mal?

LuffyFF

Así esta mal.

Porque mysql_query retorna TRUE o verdadero si se ejecuta la query de forma correcta. No importa que no devuelva resultados, pero si se ejecuta bien sin dar resultados, se transforma en TRUE.

Asi de que esa forma no te va a funcionar.

Lo que tendrías que hacer es un contador según $result, y si devuelve 0, sería Error al intentar borrar. Sino, Borrado. Porque si hay dos usuarios con el mismo usuario y id, puede devolver 2. Esta es una opción, que lo podrías usar con mysql_num_rows, para saber la cantidad de registros devueltos.

Si no te funciona, porque no estoy seguro si funcione el mysql_num_rows con DELETE, puedes hacer otra query para chequear si existe usuario = $duke y id = $id, y si existe, lo borra, sino, borrar.

Servia

#2
Osea?
Código (php) [Seleccionar]
<?
require('conector.php');

$duke=($_SESSION['UsNick']);
$id=($_REQUEST["id"]);

$sql = "DELETE FROM tablaus WHERE usuario='".$duke."' and id='".$id."'";
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($result);     
$rows = mysql_num_rows($result);

if($rows) {
echo ' Borrado';
} else {
echo 'Error al intentar borrar ';
}
?>


Me da error

eLank0

Yo haría...

<?php
require('conector.php');
 
$duke=($_SESSION['UsNick']);
$id=($_REQUEST["id"]);
 
$sql "DELETE FROM tablaus WHERE usuario='".$duke."' and id='".$id."'";
$result mysql_query($sql) or die(mysql_error());

echo 
"Borrado correcto";

?>


Si ya tratas el error con la función específica no hace falta que lo vuelvas a poner abajo. En cualquier caso, podrías usar la función mysql_affected_rows(identificador de conexión) para comprobar que has borrado correctamente.

Salu2

Servia

Ya lo he arreglado como decía Lightning, gracias de todos modos :P

WHK

#5
Yo lo haría:

Código (php) [Seleccionar]
<?php
error_reporting
(0);
if(!require(
'conector.php')){
 die(
'Error al obtener los datos de la MySQL');
}
$duke stripslashes($_SESSION['UsNick']);
$id= (int)$_REQUEST["id"];
if(
mysql_query(
  
"DELETE FROM tablaus 
   WHERE usuario='"
.
   
mysql_real_escape_string($duke).
  
"' and id='".$id."';"
 
)){
 echo 
htmlspecialchars($dukeENT_QUOTES).' - Borrado correcto';
}else{
 echo 
'No ha podido ser borrado.';
}
mysql_close();
?>