Avatar billede spike. Nybegynder
02. februar 2003 - 18:45 Der er 8 kommentarer

Teste om en tabel i databasen eksistere? (mysql)

Jeg har denne database:

Rating:
Navn Score
1    10
2    20
3    5

Jeg laver så denne forespørgsel:
mysql_query("update rating set score = (score + $minscore) where navn LIKE '$nummer'");

Problemet er, hvis $nummer f.eks. var 4, så ville den ikke indsætte. Hvordna gør jeg sådan så den indsætter hvis at den ikke eksistere, men updater hvis den gør?
Avatar billede taskmgr Nybegynder
02. februar 2003 - 19:02 #1
$query = mysql_query("SELECT COUNT(*) AS antal FROM rating WHERE navn = '$nummer'");
$row = mysql_fetch_array($query);
if ($row["antal"] > 0) {
mysql_query("update rating set score = (score + $minscore) where navn LIKE '$nummer'");
} else {
mysql_query("INSERT INTO rating (Navn,Score) VALUES ('$nummer','$minscore)");
}
Avatar billede Slettet bruger
02. februar 2003 - 19:02 #2
$sql = "select * from Rating where Navn='4'";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
if($rows > 0)
{
    mysql_query("update rating set score = (score + $minscore) where navn LIKE '$nummer'");

}
else
{
    $sql = inser bla bla!
    mysql_query($sql);
}
Avatar billede andy Nybegynder
03. februar 2003 - 18:30 #3
Der er ingen grund til at selecte....

mysql_query("update rating set score = (score + $minscore) where navn LIKE '$nummer'");
if (mysql_affected_rows() == 0) { // din insert query }

NOTE: hvorfor bruger du "where navn LIKE '$nummer'"?? Hvorfor ikke bare "WHERE navn='$nummer'" ??
Avatar billede ksostack Nybegynder
03. februar 2003 - 21:07 #4
Eller endnu kortere:

if(!(mysql_query("update rating set score=(score + $minscore) where navn='$nummer'"))) {
mysql_query("INSERT INTO rating (Navn,Score) VALUES ('$nummer','$minscore)");
}

//ksostack
Avatar billede ksostack Nybegynder
03. februar 2003 - 21:08 #5
skal være:
mysql_query("INSERT INTO rating (Navn,Score) VALUES ('$nummer','$minscore')");

//ksostack
Avatar billede andy Nybegynder
03. februar 2003 - 22:31 #6
Hmmm, er du sikker på det?

http://dk.php.net/manual/en/function.mysql-query.php
"Only for SELECT,SHOW,EXPLAIN or DESCRIBE statements mysql_query() returns a resource identifier or FALSE if the query was not executed correctly. For other type of SQL statements, mysql_query() returns TRUE on success and FALSE on error."
Avatar billede ksostack Nybegynder
03. februar 2003 - 23:37 #7
Jep, if(! <--- (læg mærke til udråbstegnet, der betyder "ikke")(mysql_query...
altså, hvis forespørgslen Ikke returnerer et resultat (der er ingen rækker i databasen der passer med WHERE kriteriet, skal den udføre funktionen der står mellem {...}, og hvis den returnerer et resultat, så har den jo allerede udført sin funktion, da det jo er den der returnerer resultatet.
;-}
//ksostack
Avatar billede andy Nybegynder
04. februar 2003 - 18:18 #8
ksostack, jeg tror du er gået galt i byen..

"A non-FALSE return value means that the query was legal and could be executed by the server. It does not indicate anything about the number of rows affected or returned. It is perfectly possible for a query to succeed but affect no rows or return no rows. "

mysql_query() returner true selvom der ingen rows der blev opdateret..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester