【发布时间】:2016-05-14 00:33:28
【问题描述】:
我正在转换为 Mysqli 面向对象(或尝试)。我有各种类别的页面。我想在包含中使用参数占位符'?',然后在类别页面上调用正确的类别。
这是我所得到的。如何在我的页面上指明类别?如果我指出WHERE category = apples,一切正常。
我在类别页面的顶部有这个包含
<?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 -
不要在变量上使用单引号。另见上面的注释^。它也被称为
placeholder,而不是wildcard。 -
哦,我差点错过了,您甚至没有准备您的查询。