Gå til innhold

problemer med if/mysq spørring[LØST]


Anbefalte innlegg

Skrevet (endret)

har denne koden på sletting av produkter, og den klarer å slette produktet, men jeg får ut ERROR bare.. ikke SUKSESS.. :

<?
//deklarering av variabler
$todo = $_POST['prodid'];
$dato = date("y.d.m, H:i:s", time());
echo ($todo);
$sql = "DELETE FROM produkt WHERE produktID = $todo";

//database snakk
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);


mysql_query($sql);

$sql = "";
$sql = "SELECT * FROM produkt WHERE produktID = $todo";
mysql_query($sql);
if (empty($sql)){
echo "SUKSESS";
}
else
{
echo "ERROR";
}
mysql_close();
?>

Endret av phun-ky
Videoannonse
Annonse
Skrevet (endret)

uææh, fant feilen med en gang.. EDIT: trodde jeg.. nå får jeg: 5

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /hsphere/local/home/phun-ky/umedia.no/admin/a_prod_slett.php on line 17

SUKSESS

som output..

 

<?
//deklarering av variabler
$todo = $_POST['prodid'];
$dato = date("y.d.m, H:i:s", time());
echo ($todo);
$sql = "DELETE FROM produkt WHERE produktID = $todo";

//database snakk
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

mysql_query($sql);

$sql = "";
$sql= mysql_query("SELECT * FROM produkt WHERE produktID = '$todo'");
$numrows = mysql_num_rows($sql);

if($numrows == 1)
{
echo "ERROR";
}
else
{
echo "SUKSESS";
}
mysql_close();
?>

Endret av phun-ky
Skrevet
if (empty($sql)){

echo "SUKSESS";

}

else

{

echo "ERROR";

}

Dette vil vel bare sjekke om variablen sql er tom eller ikke? Variabelen sql er jo ikke tom....

Skrevet

<?
//deklarering av variabler

$sql = "DELETE FROM produkt WHERE produktID = $todo";

//database snakk

mysql_query($sql);


$sql = "";
$sql = "SELECT * FROM produkt WHERE produktID = $todo";
mysql_query($sql);


if (empty($sql)){
echo "SUKSESS";
}
else
{
echo "ERROR";
}
mysql_close();
?>

[OFFTOPIC]

Hei, du har definert variabelen $sql tre ganger. Hva er hensikten med det, da du kun sletter den raden. etter det finnes den jo ikke mer.

 

Hvorfor tar du da en dømt feil spørring "SELECT * FROM... WHERE ProdID=prodid"

Den er jo slettet.

 

[/OffTopic]

 

[ONTOPIC]

 

Det du kan gjøre, er:

 


<?
//deklarering av variabler
$todo = $_POST['prodid'];
$dato = date("y.d.m, H:i:s", time());
echo ($todo);
$sql = "DELETE FROM produkt WHERE produktID = $todo";

//database snakk
include("db.php");
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);

mysql_query($sql);



if($sql)
{
echo "SUKSESS";
}
else
{
echo "FEIL";
}
mysql_close();
?>


 

[/ONTOPIC]

Skrevet

Du har muligens løst det, men det finnes en mye enklere måte å sjekke om raden ble slettet. Ta en kikk på mysql_affected_rows()

 

Bruk alltid denne funksjonen for å bekrefte at data er lagret, oppdatert og slettet.

Skrevet

er ikke:

 

if($numrows == 1)
{
echo "ERROR";
}
else
{
echo "SUKSESS";
}

 

det samme som:

if(mysql_rows_affected() == 1)
{
echo "ERROR";
}
else
{
echo "SUKSESS";
}

Skrevet

spørs hva $numrows er det...

 

hvis du derimot lurer på om mysql_num_rows() og mysql_affected_rows() gjør samme ting, så står det beskrevet sort på blått i manualen

Skrevet

Og mer spennende, hva er mysql_rows_affected?

Det heter vel mssql_rows_affected når du bruker MSSQL, men mysql_affected_rows() når du bruker MySQL.

 

Det er ikke det samme å sjekke resultatet av en spørring,

$result = mysql_query($sql);

if ($result)

som å sjekke om det faktisk ble gjort noen endringer!

 

mysql_query() returnerer false kun dersom det er noe i veien med spørringen - uavhenig om noe er endret. "UPDATE tabell SET felt = 'oppdatering' WHERE id = 5"

Dersom du ikke har noen rad med id = 5 så blir ikke noe oppdatert, men det er ikke noe i veien med spørringen - så $result vil ikke returnere false.

 

Derfor finnes funksjonen mysql_affected_rows() - den sjekker om det er noe som ble endret.

Skrevet

skjønner det at det bør brukes ved update.. men hvis det bare er snakk om insert/delete spørringer så bruker jeg:

 

$numrows = mysql_num_rows($sql);

Skrevet

Håper du mener i alle fall mysql_num_rows($result);

Hvis ikke så sjekker du om en string er true, det vil den alltid være - se php.net/bool

 

Videre så skjønner jeg over hodet ikke hvorfor du vil sjekke på den måten. Det står klart og tydelig i manualen at mysql_num_rows ikke skal brukes til dette. Selv om ting fungerer i den versjonen av PHP du kjører nå så hold deg til det som står i manualen.

This command is only valid for SELECT statements. To retrieve the number of rows affected by a INSERT, UPDATE or DELETE query, use mysql_affected_rows().

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...