Beste tweakers,
Voor een website moet ik een menu uit een database generen. Hiervoor maak ik gebruik van deze code:
$mysqli->prepare($query) geeft FALSE. Dit ligt hoogstwaarschijnlijk aan de $query want de inloggegevens kloppen want dit heeft bij een andere functie wel gewerkt. (hieronder)
Ik heb het ook op een andere manier geprobeerd:
Dit werkte ook niet, ik krijg hierbij wel de goeie path maar niet de goeie title. Als title kreeg ik namelijk 'title_nl'.
Ik heb niet echt veel ervaring met prepared statements, maar dit lijkt me gewoon raar. Hopelijk weet iemand hier iets op
Groeten, Kees
Voor een website moet ik een menu uit een database generen. Hiervoor maak ik gebruik van deze code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| function makeMenu() { // vormt een menu naar de (actieve) pagina's aangegeven in de pages tabel. taalafhankelijk. moet nog gebouwd worden $menu = ''; $config = $this->config(); $mysqli = new mysqli($config['mysql']['host'], $config['mysql']['user'], $config['mysql']['password'], $config['mysql']['db']); $query = " SELECT title_?, file FROM page WHERE active = 1 "; if($maker = $mysqli->prepare($query)) { $maker->bind_param('s', $this->lang); $maker->execute(); $maker->bind_result($titles, $paths); while($maker->fetch()) { $menu .= sprintf('<a href="./%1$s.php" title="%2$s">%2$s</a>\n', $paths, $titles); } $maker->close(); } $mysqli->close(); return $menu; } |
$mysqli->prepare($query) geeft FALSE. Dit ligt hoogstwaarschijnlijk aan de $query want de inloggegevens kloppen want dit heeft bij een andere functie wel gewerkt. (hieronder)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| function loadInfo($pid) { $config = $this->config(); $mysqli = new mysqli($config['mysql']['host'], $config['mysql']['user'], $config['mysql']['password'], $config['mysql']['db']); $query = " SELECT id, title_?, content FROM page WHERE id = ? "; if($loader = $mysqli->prepare($query)) { $loader->bind_param('sd', $this->lang, $pid); $loader->execute(); $loader->bind_result($id, $title, $content); $loader->fetch(); $loader->close(); } $mysqli->close(); return $result; } |
Ik heb het ook op een andere manier geprobeerd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| $langTit = 'title_' . $this->lang; $query = " SELECT ?, file FROM page WHERE active = 1 "; if($maker = $mysqli->prepare($query)) { $maker->bind_param('s', $langTit); $maker->execute(); $maker->bind_result($titles, $paths); while($maker->fetch()) { $menu .= sprintf('<a href="./%1$s.php" title="%2$s">%2$s</a>\n', $paths, $titles); } $maker->close(); } |
Dit werkte ook niet, ik krijg hierbij wel de goeie path maar niet de goeie title. Als title kreeg ik namelijk 'title_nl'.
Ik heb niet echt veel ervaring met prepared statements, maar dit lijkt me gewoon raar. Hopelijk weet iemand hier iets op
Groeten, Kees