<?
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?
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.
Osea?
<?
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
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 (http://www.php.net/mysql_affected_rows)(identificador de conexión) para comprobar que has borrado correctamente.
Salu2
Ya lo he arreglado como decía Lightning, gracias de todos modos :P
Yo lo haría:
<?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($duke, ENT_QUOTES).' - Borrado correcto';
}else{
echo 'No ha podido ser borrado.';
}
mysql_close();
?>