MySQL Class voor php 5

Door Iltar van der berg, 15 jaar geleden, 3.120x bekeken

Naar aanleiding van de vorige functie voor connecten, plaats ik mijn script ook maar even.

met $sql = new sql; roep je de class op.
met $value = secure($_POST['value']); zorg je voor veilige queries.
met $result = $sql->query("HIER je COMPLETE query"); doe je een query.

door te kijken met

if(!defined('IN_SITE'))
{
die();
}

Zorg je dat mensen niet op de pagina kunnen komen.

Dit kan je zelf oplossen door in je pagina waar de requires in staan te zetten:
define('IN_SITE',true);

Bugs of suggesties? posten maar.

Gesponsorde koppelingen

PHP script bestanden

  1. mysql-class-voor-php-5

 

Er zijn 12 reacties op 'Mysql class voor php 5'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Leroy Boerefijn
Leroy Boerefijn
15 jaar geleden
 
0 +1 -0 -1
leuk!

is het dan alleen niet makkelijker om met MySQLi te gaan werken?
Mark Pieper
Mark Pieper
15 jaar geleden
 
0 +1 -0 -1
Idd, MySQLi heeft zelf al een class, ook kan je PDO eens proberen. Allebei PHP5
Iltar van der berg
iltar van der berg
15 jaar geleden
 
0 +1 -0 -1
Ik heb zelf geen idee hoe msqli werkt... Is dat gewoon hetzelfde als een mysql database?
GaMer B
GaMer B
15 jaar geleden
 
0 +1 -0 -1
Het heeft functies zoals: mysqli_fetch_array() etc. ;) Volgens mij is h wel ongeveer hetzelfde.
Iltar van der berg
iltar van der berg
15 jaar geleden
 
0 +1 -0 -1
Ik weet alleen dat het in php 6 de standaard word of iets dergelijks.
Als het kan, ga ik het meteen veanderen, maar omdat ik phpmyadmin gebruik enzo, weet ik niet of ik alles moet omgooien, ik hoor dit graag, omdat ik anders alles verkeerd maak.
Jelmer -
Jelmer -
15 jaar geleden
 
0 +1 -0 -1
Vanwaar die .= bij de error-meldingen? (en waarom sla je ze eigenlijk 'private' op in de klasse als je ze toch direct erna al via een exception bekend maakt)
Iltar van der berg
iltar van der berg
15 jaar geleden
 
0 +1 -0 -1
In dit geval is het niet zo nodig nee. Ik had het anders voor het debuggen, ben het vergeten te veranderen, Private, waarom niet public? waarom zou het uberhaupt eruit beschikbaar meoten zijn?
Joeri
Joeri
15 jaar geleden
 
0 +1 -0 -1
leuke class al gebruik ik sinds enige tijd de mysqli_query() en vind ze er ver op vooruit gegaan tov mysql_query() zeker voor meerdere query's mbv STMT.

Deze tutorial vond ik zeer handig
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
Los van het feit dat MySQLi al classes heeft is het natuurlijk een goed idee om je in OOP te verdiepen. Dan is dit een leuke oefening.

Tip: maak van je errors een array zodat je errors via array_push op een stack kunt zetten. Als er dan meer dan 1 error is kun je je error-array gewoon uitlezen met bijv. foreach.
Iltar van der berg
iltar van der berg
15 jaar geleden
 
0 +1 -0 -1
Zal ik eens even proberen. Ik denk alleen niet dat het nodig is in dit script :)

Ik heb me trouwens verdiept in de standaard mysqli class. Dat is redelijk onhandig vind ik. Kan ik hier niet gewoon de mysql_query() etc veranderen naar mysqli_query() en de verbinding ook etc.?
Lode
Lode
15 jaar geleden
 
0 +1 -0 -1
Hier ook al aan de slag Iltar :-]

mysqli is zeker een stuk beter als de gewone mysql functies! en bied meer opties. en qua veiligheid zijn prepared statements een must!
De i staat dan ook voor improved!

je kan de mysqli, myslqi_stmt en mysqli_result inderdaad gewoon extenden!
En op die manier een hele nette wrapper class of classes maken!
Mijne is zo goed als af ^^

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class database extends mysqli{

     protected static $connection = false;

     public function __construct($host, $user, $pass){
          #nog geen verbinding of een nieuwe verbinding?
          if(false === self::$connection || $this != self::$connection){
               @
parent::__construct($host, $user, $pass, NULL, NULL);
               if(mysqli_connect_errno() <> 0){
                     throw new Exception('Could not connect to database!');
              }

              # testje:
              echo var_dump($this).'<br/>'.PHP_EOL;
          }
     }
}

?>

De rest mag je zelf uitvogelen ^^ Want ik hou 'm lekker voor mezelf ;-)

om de functies bij de hand te hebben kan je zoiets doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
echo 'mysqli methods:';
echo '<pre>';
print_r(get_class_methods('mysqli'));
echo '</pre>';
?>

etc voor de andere classes.
scheelt weer bladeren in de manual.


Verder als reactie op je class(je):
In z'n huidige vorm vind ik het niet echt een toevoeging op de gewone mysql functies. Maar ik weet hoe leergierig je bent dus is een goede oefening voor je denk ik!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    private $localhost  = 'localhost';
    private $username   = ''; // username
    private $password   = ''; // password
    private $database   = ''; // database
?>


Dit kan je dus veel beter buiten je class halen! Zodat je meerdere instancies kan aanmaken van de class voor eventueel verbindingen meedere databases. Je kan het maar nodig hebben... zie het voorbeeld boven.

En mocht je het dan toch binnen je class doen... gebruik dan const zou ik zeggen... zeg maar het nieuwere broertje van define();
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
#binnen je class
const host = 'localhost';

echo 'host: '.self::host.'<br/>'.PHP_EOL;
?>


daarnaast zou ik een een try / catch blok maken voor de daadwerkelijk verbinding en 1tje voor de query uitvoer.

zeker in mysqli is dat handiger aangezien daar verschillend functies zijn voor connection errors en query errors!

voor het debuggen is het misschien handiger om trigger_error te gebruiken met een E_USER_NOTICE... dan stopt je script niet... Of iets maken met set_error_handler();
dan hoef je de eerder voorgestelde array ook niet te implementeren...



NB. leuke ubb parser hebben ze hier?! Dit krijg ik voor een escape op een single quote... \' (is al aangepast...)

'throw new Exception('Couldn'
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/vhosts/phphulp.nl/httpdocs/cfgs/ubbparser/bbcode.class.php on line 472
t connect to database!'); '
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Iltar van der berg
iltar van der berg
15 jaar geleden
 
0 +1 -0 -1
Hoe werkt dit dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
#binnen je class
const host = 'localhost';

echo 'host: '.self::host.'<br/>'.PHP_EOL;
?>

en hoe weet hij wat je verbinding mmoet zijn??

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. mysql-class-voor-php-5

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.