我正在轉換爲Mysqli面向對象(或試圖)。我有各種分類頁面。我想在包含中使用參數佔位符'?'
,然後在類別頁面上調用正確的類別。 這是我得到的。如何在我的頁面上指明類別?如果我指出WHERE category = apples
,所有工作正常。PHP MySQLI面向對象與通配符
我有這個包括類別頁面
<?php require_once 'maincats_mysqli.php' ?>
的頂部,低於:
<?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();
}
?>
下面是一個分類頁面的一部分。我如何指出哪個類別?任何幫助,將不勝感激。
<?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)從'... category ='?'中刪除單引號...'。 2)看到這個語句'$ stmt-> bind_param('s',['$ category']);',它應該是'$ stmt-> bind_param('s',$ category);'。 3)你沒有**執行你準備好的陳述。 4)RTM,[http://php.net/manual/en/mysqli.quickstart.prepared-statements。php](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) –
不要在變量上使用單引號。另請參閱上面的註釋^。它也被稱爲「佔位符」,而不是「通配符」。 – chris85
哦,我幾乎錯過了,你甚至沒有**準備**你的查詢。 –