Ich konvertiere zu Mysqli objektorientiert (oder zu versuchen). Ich habe verschiedene Kategorieseiten. Ich möchte einen Parameter Platzhalter '?'
im Include verwenden und dann die richtige Kategorie auf der Kategorieseite aufrufen. Das ist soweit ich habe. Wie gebe ich die Kategorie auf meiner Seite an? Alles funktioniert gut, wenn ich WHERE category = apples
angeben.PHP MySQLI Objekt-orientiert mit Wildcard
Ich habe hierfür sind oben eine Kategorie-Seite
<?php require_once 'maincats_mysqli.php' ?>
, die unten:
<?php
$db = new mysqli('host', 'userName', '', 'dbName');
if ($db->connect_error) {
$error = $db->connect_error;
} else {
$sql = "SELECT pageName, gImage, prodName, prodPrice
FROM tableName
WHERE category = '?'
ORDER BY dtList DESC";
$stmt->bind_param('s', ['$category']);
$result = $db->query($sql);
if ($db->error) {
$error = $db->error;
}
}
function getItem($result) {
return $result->fetch_assoc();
}
?>
Unten Teil einer Kategorie-Seite ist. Wie gebe ich an, welche Kategorie? Jede Hilfe wäre willkommen.
<?php
if (isset($error)) {
echo "<p>$error</p>";
}
?>
<?php
while ($item = getItem($result)) {
?>
<a href="http://www.example.com/<?php echo $item['pageName']; ?>">
<img src="http://www.example.com/<?php echo $item['gImage']; ?>"</a>
<a href="http://www.example.com/<?php echo $item['pageName']; ?>">
<?php echo $item['prodName']; ?></a>
<?php echo $item['prodPrice']; ?>
<?php
}
?>
1) Entfernen Sie einzelne Anführungszeichen von '... category = '?' ... '. 2) Siehe diese Anweisung '$ stmt-> bind_param ('s', ['$ category']);', es sollte '$ stmt-> bind_param ('s', $ category) sein;'. 3) Sie haben ** Ihre vorbereitete Aussage nicht ** ausgeführt. 4) RTM, [http://php.net/manual/de/mysqli.quickstart.prepared-statements.php] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) –
Verwenden Sie keine einfachen Anführungszeichen für Variablen. Siehe auch obige Hinweise ^. Es wird auch ein 'Platzhalter', kein' Platzhalter' genannt. – chris85
Und oh, ich hätte es fast vermisst, du hast deine Anfrage nicht einmal vorbereitet. –