带通配符的PHP MySQLI面向对象
我正在转换为Mysqli面向对象(或尝试)。我有各种类别的网页。我想在include中使用参数占位符带通配符的PHP MySQLI面向对象,php,oop,mysqli,wildcard,Php,Oop,Mysqli,Wildcard,我正在转换为Mysqli面向对象(或尝试)。我有各种类别的网页。我想在include中使用参数占位符“?”,然后在category页面上调出正确的类别。 这就是我所能做到的。如何在页面上显示类别?如果我指示其中category=apples,所有这些都可以正常工作 我有这个包括在一个类别页面的顶部 <?php require_once 'maincats_mysqli.php' ?> 详情如下: <?php $db = new mysqli('host', 'userN
“?”
,然后在category页面上调出正确的类别。
这就是我所能做到的。如何在页面上显示类别?如果我指示其中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();
}
?>
您缺少prepare()
。请看下表中的第一个示例:
请注意,您不能引用绑定的参数。您缺少prepare()
。请看下表中的第一个示例:
请注意,您不能引用绑定的参数。首先,您不能声明$stmt
其次,?
在本例中不是通配符,而是参数占位符。您可以在准备查询时使用这些占位符,使用$mysqli->prepare($sql)
。见文件:
第三,将变量封装在单引号中,因此它是一个带有美元和变量名称的字符串,而不是其内容。并且它不能位于数组中:
$stmt->bind_param('s', $category);
最后:$category
来自哪里?你给我们看的脚本中没有定义它。我猜它来自$\u GET
,因此前一行应该是:
$stmt->bind_param('s', $_GET['category']);
最后,您需要执行包含查询的语句:
$stmt->execute();
编辑:
要获取结果,不需要使用getItem()
函数。把它拿走
$result = $stmt->get_result();
然后您可以在$result
上循环并获取每一行:
while ($item = $result->fetch_assoc()):
// do you stuff
endwhile;
请注意,我在这里使用了在您的情况下更清楚的(endwhile
比}
更明确)首先,您不声明$stmt
其次,?
在本例中不是通配符,而是参数占位符。您可以在准备查询时使用这些占位符,使用$mysqli->prepare($sql)
。见文件:
第三,将变量封装在单引号中,因此它是一个带有美元和变量名称的字符串,而不是其内容。并且它不能位于数组中:
$stmt->bind_param('s', $category);
最后:$category
来自哪里?你给我们看的脚本中没有定义它。我猜它来自$\u GET
,因此前一行应该是:
$stmt->bind_param('s', $_GET['category']);
最后,您需要执行包含查询的语句:
$stmt->execute();
编辑:
要获取结果,不需要使用getItem()
函数。把它拿走
$result = $stmt->get_result();
然后您可以在$result
上循环并获取每一行:
while ($item = $result->fetch_assoc()):
// do you stuff
endwhile;
请注意,我在这里使用了在您的案例中更清楚的(endwhile
比}
更明确)1)从中删除单引号。。。类别=“?”…
。2) 请参阅此语句$stmt->bind_param('s',['$category'])代码>,它应该是$stmt->bind_param('s',$category)代码>。3) 你没有执行你准备好的陈述。4) RTM,不要在变量上使用单引号。另见上文注释^。它也被称为占位符
,而不是通配符
。哦,我差点错过了,你甚至没有准备好你的查询。1)从中删除单引号。。。类别=“?”…
。2) 请参阅此语句$stmt->bind_param('s',['$category'])代码>,它应该是$stmt->bind_param('s',$category)代码>。3) 你没有执行你准备好的陈述。4) RTM,不要在变量上使用单引号。另见上文注释^。它也被称为占位符
,而不是通配符
。哦,我差点错过了,你甚至没有准备好你的查询。我真的很难做到这一点。该信息已在my db表中。我只需要将我的电子商务网站从MySQL转换为MySQLi。我以前在每个产品页面和分类页面上都有“选择”按钮,用来调出我需要的信息。我想我可以把Select放在MySQLi的一个包含中。我已经尝试了上面所有的建议,但似乎没有任何效果。我真的很难接受。该信息已在my db表中。我只需要将我的电子商务网站从MySQL转换为MySQLi。我以前在每个产品页面和分类页面上都有“选择”按钮,用来调出我需要的信息。我想我可以把Select放在MySQLi的一个包含中。我尝试了上面所有的建议,但似乎没有任何效果。