query uitvoeren met PDO
daarbinnen 2 functies:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
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 database extends PDO {
function __construct($dblogin)
{
try
{
parent::__construct('mysql:host=127.0.0.1;dbname='.$dblogin['db'], $dblogin['user'], $dblogin['pass']);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
if ($this->debug) echo $e->getMessage();
}
}
function query($sql, $params = NULL)
{
$starttime = microtime(TRUE);
try
{
if (is_null($params))
{
$results = parent::query($sql);
}
else
{
$stmt = parent::prepare($sql);
foreach ($params as $key => $value)
{
if (is_int($value))
$stmt->bindParam($key, $value, PDO::PARAM_INT);
else if (is_string($value))
$stmt->bindParam($key, $value, PDO::PARAM_STR);
else if (is_bool($value))
$stmt->bindParam($key, $value, PDO::PARAM_BOOL);
else
$stmt->bindParam($key, $value, PDO::PARAM_NULL);
}
$stmt->execute();
$results = $stmt->fetchAll();
}
}
catch (PDOException $e)
{
if ($this->debug) echo $e->getMessage();
}
$this->log[] = array('sql'=>$sql,'time'=>microtime(TRUE)-$starttime);
return (isset($results)) ? $results : NULL;
}
}
?>
class database extends PDO {
function __construct($dblogin)
{
try
{
parent::__construct('mysql:host=127.0.0.1;dbname='.$dblogin['db'], $dblogin['user'], $dblogin['pass']);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
if ($this->debug) echo $e->getMessage();
}
}
function query($sql, $params = NULL)
{
$starttime = microtime(TRUE);
try
{
if (is_null($params))
{
$results = parent::query($sql);
}
else
{
$stmt = parent::prepare($sql);
foreach ($params as $key => $value)
{
if (is_int($value))
$stmt->bindParam($key, $value, PDO::PARAM_INT);
else if (is_string($value))
$stmt->bindParam($key, $value, PDO::PARAM_STR);
else if (is_bool($value))
$stmt->bindParam($key, $value, PDO::PARAM_BOOL);
else
$stmt->bindParam($key, $value, PDO::PARAM_NULL);
}
$stmt->execute();
$results = $stmt->fetchAll();
}
}
catch (PDOException $e)
{
if ($this->debug) echo $e->getMessage();
}
$this->log[] = array('sql'=>$sql,'time'=>microtime(TRUE)-$starttime);
return (isset($results)) ? $results : NULL;
}
}
?>
de vraag is nu: hoe krijg ik mijn resultaat in de $contacts?
Ik probeer het met de volgende code:
index.php
Code (php)
Wat doe ik verkeerd?
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 01/01/2019 22:47:33 door - Ariën -
Dan nog de volgende zaken:
- ik denk dat die typechecks op de argumenten niet zoveel uithalen, zelfs niet als het daadwerkelijk integers, strings en booleans zijn; in de emulatie van prepared statements (wat standaard gebeurt?) wordt volgens mij alles behandeld als string? Kijk maar eens naar de queries die daadwerkelijk worden uitgevoerd, daar wordt als ik het mij goed herinner gewoon alles voorzien van quotes;
- je zou voor de goede orde ook een charset moeten opnemen in de DSN (Data Source Name; de connectie-string)
- waarom haal je alle argumenten uit $dblogin behalve de host(name)?
En voor codeblokken zijn [code][/code] tags.
Gewijzigd op 01/01/2019 21:48:25 door Thomas van den Heuvel