Mysql extensie
Wouter J op 21/02/2012 19:47:51:
Ik zie geen reden waarom je mysql_num_rows niet moet gebruiken, het is juist een functie die je moet gebruiken en die veel beginners vergeten.
COUNT id doet het net zo goed. Of gewoon count() in php op je assocatieve array.
Quote:
En input beveiligen is ook niet moeilijk op $_POST en $_GET met een standaard-functie.
In PDO heb je PDO::quote en in MySQLi heb je MySQLi::real_escape_string of MySQLi::escape_string (is hetzelfde).[/quote]
Precies. Dat doet dus hetzelfde als bij mySQL. Wat is het voordeel van PDO/mySQLi hier dan?
Quote:
Omslachtigheid voorkomen.
Ik wil geen 5 regels gebruiken om 1 (vaste) query uit te voeren.
Ik wil geen 5 regels gebruiken om 1 (vaste) query uit te voeren.
Preparend statements is handig om alles netjes uit elkaar te houden, de query te laten checken alvorens hem uit te voeren, de query te beveiligen, en te gebruiken bij variabele queries. De voorbeelden 17 en hoger van deze pagina laten voor mij een heel groot voordeel van gebruik prepared statements zien, en voor de MySQLi fans: http://phptuts.nl/view/26/5/[/quote]
Query checken is inderdaad wel een voordeel.
Maar ik controleer mijn input toch wel. Een input welke getal moet zijn gaat eerst echt wel door intval() of is_int() alvorens ik een query uitvoer.
Moet er wel bij zeggen dat ik nauwelijk complexe queries met userinput gebruik (er zijn wel complexe queries, maar die hebben geen user-input nodig).
Als het enige voordeel dus het vooraf controleren van je query is, dan is dat toch niet echt een groot voordeel? Noem nou eens wat echte voordelen die er toe doen.
Toevoeging op 22/02/2012 09:30:17:
Ik heb even voorbeeld 18 genomen en dat omgezet naar het zelfde in mySQL:
Code (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
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
<?php
$personen = array(
array(
'naam' => 'Piet',
'email' => '[email protected]',
'leeftijd' => 34 ),
array(
'naam' => 'Kees',
'email' => '[email protected]',
'leeftijd' => 40 ),
array(
'naam' => 'Karel',
'email' => '[email protected]',
'leeftijd' => 25 )
);
$con = mysql_connect('localhost', 'user', 'pass');
$db = mysql_select_db('database_naam');
if($con !== false OR $db !== false)
{
foreach($personen as $persoon)
{
$persoon = check_on_column($persoon, 'databasenaam/tabel');
$res = mysql_query("INSERT INTO tabel ( naam, leeftijd, email)
VALUES ('".$persoon['naam']."', '".$persoon['leeftijd']."', '".$persoon['email']."') ");
if($res === false)
{
echo ' <pre>
Regel: '.$e->getLine().'<br>
Bestand: '.$e->getFile().'<br>
Foutmelding: '.$e->getMessage(). '
</pre>';
}
}
}
?>
$personen = array(
array(
'naam' => 'Piet',
'email' => '[email protected]',
'leeftijd' => 34 ),
array(
'naam' => 'Kees',
'email' => '[email protected]',
'leeftijd' => 40 ),
array(
'naam' => 'Karel',
'email' => '[email protected]',
'leeftijd' => 25 )
);
$con = mysql_connect('localhost', 'user', 'pass');
$db = mysql_select_db('database_naam');
if($con !== false OR $db !== false)
{
foreach($personen as $persoon)
{
$persoon = check_on_column($persoon, 'databasenaam/tabel');
$res = mysql_query("INSERT INTO tabel ( naam, leeftijd, email)
VALUES ('".$persoon['naam']."', '".$persoon['leeftijd']."', '".$persoon['email']."') ");
if($res === false)
{
echo ' <pre>
Regel: '.$e->getLine().'<br>
Bestand: '.$e->getFile().'<br>
Foutmelding: '.$e->getMessage(). '
</pre>';
}
}
}
?>
Het maakt uiteindelijk qua code niet zo heel veel uit inderdaad.
Dat valt me nog tegen. Maar kijk ik naar voorbeeld 20, dan kan dat korter:
Van:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$sql = "SELECT naam FROM tabel WHERE leeftijd > :leeftijd";
$stmt = $db->prepare($sql);
$stmt->bindParam(':leeftijd', $leeftijd, PDO::PARAM_INT);
$leeftijd = 30;
$stmt->execute();
?>
$sql = "SELECT naam FROM tabel WHERE leeftijd > :leeftijd";
$stmt = $db->prepare($sql);
$stmt->bindParam(':leeftijd', $leeftijd, PDO::PARAM_INT);
$leeftijd = 30;
$stmt->execute();
?>
Naar:
Naar:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$leeftijd = 30; // of iets als $_GET['leeftijd']
if(is_int($leeftijd))
{
$sql = "SELECT naam FROM tabel WHERE leeftijd > ".$leeftijd;
$res = mysql_query($sql);
}
?>
$leeftijd = 30; // of iets als $_GET['leeftijd']
if(is_int($leeftijd))
{
$sql = "SELECT naam FROM tabel WHERE leeftijd > ".$leeftijd;
$res = mysql_query($sql);
}
?>
Nu ben ik nog 2 regels kwijt aan de accolades, maar het is toch wel korter? Plus veel bekender.
Maar ik wil wel open staan voor PDO hoor. Noem eens iets overtuigends? Automatische foutmeldingen?