Ich habe mich mal an PDO drangewagt und ein simples Script zum Testen erstellt:
|
PHP Source code
|
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
|
<!DOCTYPE html>
<html>
<head>
<title>Datenbanken mit PDO</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<section>
<h1>Zeige Datensätze</h1>
<?php
$pdo = new PDO('mysql:host=localhost;dbname=mysql', 'root', 'stern2');
$sth = $pdo->prepare('SELECT * FROM db');
$sth->execute();
$result = $sth->fetchAll();
foreach ($result as $name => $wert) :
$name++;
echo " <section>\n";
echo " <h2>" . $name . ":</h2>\n";
echo " <p>\n";
foreach ($result[$name-1] as $name => $wert) :
echo " " . $name . ': ' . $wert . "<br />\n";
endforeach;
echo " </p>\n";
echo " </section>\n";
endforeach;
?>
</section>
</body>
</html>
|
Das funktioniert auch. Aber sobald bindParam dazugenommen wird, wird nichts angezeigt, d.h. es werden keine Datensätze ausgelesen und verschachtelten foreach()-Schleifen ausgeführt.
|
PHP Source code
|
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
|
<!DOCTYPE html>
<html>
<head>
<title>Datenbanken mit PDO</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<section>
<h1>Zeige Datensätze</h1>
<?php
$table = 'db';
$pdo = new PDO('mysql:host=localhost;dbname=mysql', 'root', 'stern2');
$sth = $pdo->prepare('SELECT * FROM table');
$sth->bindParam('table', $table, PDO::PARAM_STR, 12);
$sth->execute();
$result = $sth->fetchAll();
foreach ($result as $name => $wert) :
$name++;
echo " <section>\n";
echo " <h2>" . $name . ":</h2>\n";
echo " <p>\n";
foreach ($result[$name-1] as $name => $wert) :
echo " " . $name . ': ' . $wert . "<br />\n";
endforeach;
echo " </p>\n";
echo " </section>\n";
endforeach;
?>
</section>
</body>
</html>
|
Wüsste da jemand bescheid? Bei der dritten Variante gibt es sogar einen Fatal Error.
|
PHP Source code
|
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
|
<!DOCTYPE html>
<html>
<head>
<title>Datenbanken mit PDO</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<section>
<h1>Zeige Datensätze</h1>
<?php
$pdo = new PDO('mysql:host=localhost;dbname=mysql', 'root', 'stern2');
$sth = $pdo->prepare('SELECT * FROM ?');
$sth->bindParam(1, 'db', PDO::PARAM_STR, 12);
$sth->execute();
$result = $sth->fetchAll();
foreach ($result as $name => $wert) :
$name++;
echo " <section>\n";
echo " <h2>" . $name . ":</h2>\n";
echo " <p>\n";
foreach ($result[$name-1] as $name => $wert) :
echo " " . $name . ': ' . $wert . "<br />\n";
endforeach;
echo " </p>\n";
echo " </section>\n";
endforeach;
?>
</section>
</body>
</html>
|
Fatal error: Cannot pass parameter 2 by reference in E:\server\var\www\keyway-xelonis\com\htdocs\test\pdo.php on line 13
Dabei, habe ich alles so gemacht, wie im PHP-Handbuch beschrieben. PHP-Version: 5.4.4. Vielen Dank im Vorraus für hilfreiche Antworten

.