[PHP & mysql] sql error doormailen na falen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi ik gebruik momenteel volgende functie om, indien er een fout in de sql ontstaat, de sql door te mailen naar mezelf

$qr = "SELECT blaal from bla where bla = 'blalbla'";
if (!$sql = mysql_query($qr)) mailError($qr);

function mailError($query) {
$mssg = "Fout bij query:/r/n/r/n".$query;
mail("test@test.com","Fout op pagina".$_SERVER['PHP_SELF'],$mssg);
}

maar ik zou dit willen vereenvoudigen. Zoiets als
$sql = mysql_query("SELECT blaal from bla where bla = 'blalbla'") or mailError(--hier de query meegeven--);

op de plaats --hier de query meegeven-- zou dus de query moeten komen die mislukt is... hoe kan dit?

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Voor zover ik weet gaat dat niet, of je moet de query 2x intypen. Verder heb ik wel twee verbeterpunten: na 'fout op pagina' kun je misschien nog een spatie invoegen, anders komt de URL direct achter je tekst aan, en je kunt mysql_error() misschien ook meesturen.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:01
Maak een functie die een query uitvoert, en roep die functie aan.

Die functie kan er dan zo uit zien:
pseudo-code:
code:
1
2
3
4
function ExecuteQuery( string queryString )
{
      return mysql_query (queryString) or mailError (queryString);
}

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
mysql_query($qr)or die(error_log(mysql_error()." in query: ".$qr, 1, "email@isp.com"));

[ Voor 33% gewijzigd door Verwijderd op 19-08-2005 14:30 ]


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
edit: zie hieronder...

[ Voor 90% gewijzigd door supakeen op 19-08-2005 15:06 ]


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Verwijderd schreef op vrijdag 19 augustus 2005 @ 14:26:
code:
1
mysql_query($qr)or die(error_log(mysql_error()." in query: ".$qr, 1, "email@isp.com"));
De manier van whoami is een stukje netter, het is nog netter om gewoon een class te maken om alles wat je via een database doet af te handelen :)

Iets van (snel voorbeeldje om een single field uit een tabel te trekken die met ID's werkt :) (welke tabel niet :X)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php

 class MySQL()
 {

  var $server_;
  var $user_;
  var $password_;
  var $database_;

  function MySQL( $server, $user, $password, $database )
  {

    $this->server_ = $server;
    $this->user_    = $user;

   //enzovoort

  }

  //dan doe je nog ergens de connectie opbouwen

  function getSingleField( $id, $field, $table )
  {

   $query = 'SELECT `'. $field .'` FROM `'. $table .'` WHERE `id` = \''. $id .'\';';
   $result = mysql_query( $query );

   if( !$result )
   {

     //hier doe je je mail ding, gooi je mysql_error() naar een adres toe ofzo

   }
   elseif( mysql_num_rows( $result ) == 0 )
   {

     //hier doe je nog wat als er geen results zijn ($id bestaat niet in de gekozen tabel)

   }
   else
   {

     $fetch = mysql_fetch_assoc( $result );

     return $fetch[ $field ];

    }

  }

 }

?>
Vervolgens is het relatief simpel...
PHP:
1
2
3
4
5
6
7
8
<?php

  $MySQL = new MySQL( 'localhost', 'waa', 'meukee!', 'dbname' );

  print $MySQL->getSingleField( 1, 'name', 'clients' );
  print $MySQL->getSingleField( 512, 'name', 'clients' );

?>


Disclaimer: ik heb niet gecheckt of het werkt en het is even een snel en simpel ideetje :)

Dit kun je dan zelf uitwerken om ervoor te zorgen dat het ook arraytjes met alles in een tabel of in een single row kan teruggeven en zo nog veeeeeeeel meer, je kan ook je eigen error functie eraanhangendie besluit of er een mail moet worden verstuurd (en dan ook het adres van de fout meestuurt e.d.) :)

[ Voor 47% gewijzigd door supakeen op 19-08-2005 15:09 ]

Pagina: 1