Toon posts:

[PHP] mysql error maar toch niet?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ok, ik heb een simpele query (select u_id from users where u_name = '$u_name'). Als deze query 1 of meerdere row heeft, kan ik met mysql_fetch_array er rustig op los gaan.

Echter, als er geen rows in de result zitten, dan stop het met als mysql_errno 0, en mysql_error helemaal niets.

Volgens de manual returnt mysql_fetch_array false als er geen rows (meer) zijn, dus zou:

if(mysql_fetch_array($result))
{
rest van de code
}

gewoon dat stukje moeten skippen als er geen row meer zijn toch? Waarom blijft ie dan keer op keer mysql errors geven?

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Post eens wat meer code en post eens de exacte error zoals jij die krijgt :?

Programmer - an organism that turns coffee into software.


  • Onno
  • Registratie: Juni 1999
  • Niet online
En vertel op welke regel je die fout krijgt. :)

Verwijderd

Topicstarter
Op dinsdag 13 november 2001 12:35 schreef LuCarD het volgende:
Post eens wat meer code en post eens de exacte error zoals jij die krijgt :?
De exacte error is:

mysql_error: niets (helemaal niets, geen melding, niets)
mysql_errno: 0 (jaja, foutnummer 0)

De mysql code staat in een class (instance maken daarvan gaat verder probleemloos). $this->link id krijgt een waarde aan het begin bij mysql_connect. $this->dberror() is een method die de errno, error, en verscheidene andere dingen bevat.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
//Query method
function Query($query_string) 
{
   $this->query_id = @mysql_query($query_string,$this->link_id) OR die($this->Dberror(error));
}

//fetch array method
function FetchArray($query_id)
{
      $this->resultset = mysql_fetch_array($this->query_id) OR die(mysql_error());
      if (!$this->resultset)
      {
          return false;
      }
      return $this->resultset;     
}
?>

De query is verder ook goed, want als er wel rows in zitten kan ik em verder gewoon gebruiken. Alleen als de resultset leeg is doet 'ie vreemd

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 16:30

Janoz

Moderator Devschuur®

!litemod

Er is geen error opgetreden, maar doordat die fetch array een false opleverd bij een lege set, wordt het "Or DIE" gedeelte uitgevoerd.. Als je dat weglaat zal hij wel werken. Als je niet helemaal zeker bent en alles af wil vangen, dan kun je ook nog ergens controleren of mysql_erno()==0 om er zeker van te zijn dat er geen fout is opgetreden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Op dinsdag 13 november 2001 12:53 schreef Janoz het volgende:
Er is geen error opgetreden, maar doordat die fetch array een false opleverd bij een lege set, wordt het "Or DIE" gedeelte uitgevoerd.. Als je dat weglaat zal hij wel werken. Als je niet helemaal zeker bent en alles af wil vangen, dan kun je ook nog ergens controleren of mysql_erno()==0 om er zeker van te zijn dat er geen fout is opgetreden.
Ah, ik wist niet dat als de fetch_array false returnt het dan het die stuk uitvoert. Even weggelaten en idd, het werkt gewoon zoals het hoort. Weer wat geleerd! :)

Nu nog even alles goed opvangen en we kunnen weer verder.
Bedankt Janoz (en natuurlijk de rest die wou helpen ;))

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Op dinsdag 13 november 2001 13:01 schreef Gio het volgende:

[..]

Ah, ik wist niet dat als de fetch_array false returnt het dan het die stuk uitvoert. Even weggelaten en idd, het werkt gewoon zoals het hoort. Weer wat geleerd! :)

Nu nog even alles goed opvangen en we kunnen weer verder.
Bedankt Janoz (en natuurlijk de rest die wou helpen ;))
nog iets:
als je errors tegenkomt die je niet begrijpt is het sowieso niet handig om je @ teken te laten staan voor de functies die je uitvoert. Dat teken onderdrukt alle error en warning messages.

niet dat dat in dit geval uit had gemaakt, maar de @'s moet je er pas bij zetten als je al je code getest hebt, en het werkt naar behoren.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Op dinsdag 13 november 2001 13:09 legde drm wat uit:
Dat weet ik, maar die Dberror method returnt de mysql_errno, mysql_error, de query string, en als ik het wil een explain van de query en geeft mij zo meteen een compleet overzicht van de foutmelding en alles eromheen.

  • RRX
  • Registratie: Mei 2000
  • Laatst online: 25-08 23:43

RRX

@life-

als je nou eerst test hoeveel rows hij returnt?

$rows = mysql_num_rows();

if($rows >= 1)
{

}

:?

mijn T.net systeemspecspagina

Pagina: 1