Smart SQL Queries
Deze drie functies bieden PDO-achtige escape opties voor mensen zonder PDO. Ik raad eenieder die daar de mogelijkheid toe heeft van harte aan om deze functies enkel en alleen te gebruiken wanneer PDO geen optie is, of als backwards compatiblity optie voor bepaalde scripts. Dit script is opzichzelf niet bruikbaar, maar als libary tool erg handig. Dit script bied ondersteuning voor mysql en postgresql. Andere drivers zijn simpel toe te voegen in de functie getSmartCommand
Voor meer informatie over pdo verwijs ik graag door naar de uitstekende tutorial van Blanche: http://www.phphulp.nl/php/tutorials/8/534/
Inleiding
Om het escapen van queries sneller te maken heb ik een algemene tool voor sql queries geschreven. De functie escapeQuery kan gebruikt worden om snel data geescaped in de database te zetten en heeft als doel leesbare en overzichtelijke sql queries in je code op te nemen.
escapeQuery()
Argumenten
$dbh (resource) OPTIONAL Een database resource (mysql of postgresql). Als alternatief wordt $GLOBAL['dbh'] genomen
$query (string) een SQL query waarbij de waarden die SQL geescaped moeten worden met een ? worden aangegeven
$waarden (array)
of
$waarde1,$waarde2,$waarde3 ... (string, integer)
Returns:
Een geescapte sql query.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$dbh = mysql_connect('localhost', "test", "test");
mysql_select_db("testdb",$dbh);
// dit kan ook
// $dbh = pg_connect("host=localhost dbname=testdb user=test password=test");
// zijn, en smartquery zal automagisch herkennen dat het om postgresql gaat. Is dat niet cool?
$query = "
INSERT INTO cms
(title, content, user_id)
VALUES
(?,?,?)
";
$title = "Joop's website";
$content = "Een hoop geblaat";
$user_id = 10;
$query = escapeQuery($query, $title, $content, $user_id);
print $query;
?>
Resultaat:
2
3
4
(title, content, user_id)
VALUES
('Joop\'s website','Een hoop geblaat',10)
Ook is als tweede argument een array mogelijk en zal het zelfde resultaat geven:
smartQuery()
Als programmeur ben je nog wel eens lui. Ik heb in dit geval een functie geschreven die snel teruggeeft wat ik wil zonder te veel gedoe.
smartQuery handelt sql queries af en geeft afhankelijk van de query andere informatie terug.
Argumenten
$dbh (resource) OPTIONAL Een database resource. Als alternatief wordt $GLOBAL['dbh'] genomen
$query (string) een SQL query waarbij de waarden die SQL geescaped moeten worden met een ? worden aangegeven
$waarden (array)
of
$waarde1,$waarde2,$waarde3 ... (string, integer)
Returns:
In geval van een SELECT query:
een lijst (non-associative array) met resultaten. Deze is direct bruikbaar voor bijvoorbeeld smarty.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
(
[0] => Array
(
[id] => 1
[title] => Joop's website
[content] => Een hoop geblaat
)
[1] => Array
(
[id] => 2
[title] => Joop's website
[content] => Een hoop geblaat
)
)
In geval van een DELETE of UPDATE query:
Het aantal geupdate of gedelete records.
2
3
4
5
6
7
8
9
10
// $dbh is gedefinieerd als je mysql connection resource
$query = "
UPDATE cms
set user_id = ?
";
$result = smartQuery($dbh,$query,2);
print "Updated records: " . $result;
?>
returns
In geval van een INSERT query:
Het id van de geinserte record.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$query = "
INSERT INTO cms
(title, content, user_id)
VALUES
(?,?,?)
";
$title = "Joop's website";
$content = "Een hoop geblaat";
$user_id = 10;
$result = smartQuery($query, $title, $content, $user_id);
print "Inserted id: " . $result;
?>
returns
Noot: dit script is compatible met mysql en postgresql queries. Meerdere connecties (ook van verschillende types) tegelijkertijd is niet getest, en zal waarschijnlijk niet de verwachtte resultaten opleveren.
Gesponsorde koppelingen
PHP script bestanden
Er zijn 10 reacties op 'Smart sql queries'
Om te reageren heb je een account nodig en je moet ingelogd zijn.
PHP hulp
0 seconden vanaf nu