Avatar billede natsortsort Nybegynder
29. december 2009 - 18:21 Der er 11 kommentarer og
2 løsninger

mysql_affected_rows med @ $GLOBALS['db']->query....

Hej,
Jeg forsøger at bruge msql_affected rows funktionen til at undersøge om en bruger allerede findes i MYSQL databasen.

Men for at tilgå database bruges @ $GLOBALS['db']->query funktionen, og den kan jeg ikke altid få til at arbejde sammen med resten af min kode.

Koden ses nedenfor.


$sql1 = "SELECT id FROM `contenders` WHERE id LIKE".$id;
     
@ $GLOBALS['db']->query($sql1);
 
  if(mysql_affected_rows()==0){
  echo "Deltageren findes ikke"; 
  exit;
  }
else {
  echo "Deltageren findes allerede";
  }

Nogen der ved om det er mysql_affected rows der ikke spiller sammen med måden databasen tilgås eller er der fejl i ovenstående?
Avatar billede repox Seniormester
29. december 2009 - 18:49 #1
mener du seriøst at du tilgår din database gennem en superglobal variabel?
Avatar billede Slettet bruger
29. december 2009 - 18:58 #2
I stedet for at sige det samme som repox, vil jeg hellere spørge hvorfor du bruger en superglobal variabel som mellemled for adgangen til databasen? (mysql_query();)
Avatar billede wanze Nybegynder
29. december 2009 - 19:05 #3
Desuden kan du lige så godt lave mysql_num_rows(). Og hvorfor bruger du  LIKE og ikke =, når det ikke er en wildcard-søgning?
Avatar billede wanze Nybegynder
29. december 2009 - 19:09 #4
Når jeg skriver du kan lige så godt bruge mysql_num_rows(), mener jeg at du skal bruge den. Der er ingen påvirkede (affected) rækker i den forespørgsel du kører. Disse vil kun være påvirket, hvis du bruger INSERT, UPDATE, REPLACE eller DELETE.

Næste gang ville det måske være smart at konfrontere dig selv med manualen først:
http://php.net/manual/en/function.mysql-affected-rows.php
Avatar billede natsortsort Nybegynder
29. december 2009 - 20:14 #5
Tak for kommentarer, og jeg wanze, du har helt ret, det er ret dumt at jeg ikke lige tjekkede at SELECT ikke er på listen over "affected".
Jeg prøver med mysql_num_rows - LIKE istedet for = var blot for at teste om det kunne være en fejlkilde.

@repox og kimsey: Jeg må være Jer svar skyldige på hvorfor jeg bruger superglobals til at tilgå databasen. Jeg ligger og leger med en andens script som indeholder en lang række forespørgsler til databasen - men måske jeg skulle spørge forfatteren hvor der bruges superglobals.
Avatar billede natsortsort Nybegynder
29. december 2009 - 20:37 #6
Faktisk er mit hovedspørgsmål nok, hvor kan man bruge
  if(mysql_affected_rows()==0)
når man tilgår databasen via superglobals?
Avatar billede wanze Nybegynder
29. december 2009 - 20:54 #7
Jeg kan ikke se, hvorfor det skulle have nogen betydning, at det er en superglobal-variabel.
Avatar billede natsortsort Nybegynder
29. december 2009 - 21:36 #8
Jo for jeg kalder sql1 via


$sql1 = "SELECT id FROM `contenders` WHERE id LIKE".$id;
   
@ $GLOBALS['db']->query($sql1);

Men jeg har jo ikke en variabel at sætte ind i
if(mysql_affected_rows(XXXXX)==0)

Jeg kan ikke sætte hele udtrykket:
@ $GLOBALS['db']->query($sql1);

ind.
Avatar billede Slettet bruger
29. december 2009 - 21:53 #9
#7, det har ingen betydning for funktionen af siden, men det gør kun koden mere indviklet, og derfor spørger jeg: Hvorfor?
$GLOBALS['db']-objektet indeholder nok en eller anden metode til det. Prøv at kigge på koden til objektet, eller læg den her ind så vi kan kigge på det for dig.
Avatar billede wanze Nybegynder
29. december 2009 - 22:13 #10
Jeg synes du skal følge kimseys anbefaling, men din query-funktion i klassen db returnerer sikkert indholdet, så du sikkert kan skrive:
  $resultat = $GLOBALS['db']->query($sql1);
  if(mysql_num_rows($resultat)==0)
Avatar billede natsortsort Nybegynder
29. december 2009 - 23:39 #11
Tak for kommentarer.
Jeg har fået nogle ting at tænke over, men også fået det til at virke.

Med en blanding af Jeres råd. Og er gået væk fra Globals de steder hvor det er muligt.

Hvordan kan jeg give Jer point?
Avatar billede wanze Nybegynder
29. december 2009 - 23:46 #12
Hvis vi begge lægger et svar (som jeg nu har gjort), så kan du vælge at fordele pointene imellem os.
Avatar billede Slettet bruger
30. december 2009 - 00:38 #13
Ping!
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