我正在搜索一个表格,其中的结果可能来自 3 个选项(cata、catb 或 catc)中的任何一个,然后显示结果,但是我的错误警告不断弹出并且无法显示结果?
我被困住了...
<?php
include("config.php");
$cata = $_POST['cata'];
$catb = $_POST['catb'];
$catc = $_POST['catc'];
$query = "SELECT * FROM photos WHERE cata=? OR catb=? OR catc=?";
$conn = $db->prepare($query);
$conn->bind_param("sss", $cata, $catb, $catc);
if ($conn->execute()) {
$result_db = $db->query($query) or die('Error perform query!');
}
?>
<table border="1">
<tr>
<th>cata</th>
<th>catb</th>
<th>catc</th>
</tr>
<?php
while ($r = $result_db->fetch_object()) {
echo '<tr>';
echo '<td>' . $r->cata . '</td>';
echo '<td>' . $r->catb . '</td>';
echo '<td>' . $r->catc . '</td>';
echo '</tr>';
}
$db->close();
?>
不,您创建了一个准备好的语句,然后使用了带有占位符的普通查询,这就是它不起作用的原因。执行准备好的语句,然后从该准备好的语句中获取结果。
$query = "SELECT * FROM photos WHERE cata=? OR catb=? OR catc=?";
$conn = $db->prepare($query);
$conn->bind_param("sss", $cata, $catb, $catc);
$conn->execute();
$conn->bind_result($cata, $catb, $catc);
?>
<table border="1">
<tr>
<th>cata</th>
<th>catb</th>
<th>catc</th>
</tr>
<?php
while ($conn->fetch()) {
echo '<tr>';
echo '<td>' . $cata . '</td>';
echo '<td>' . $catb . '</td>';
echo '<td>' . $catc . '</td>';
echo '</tr>';
}
或者如果您有mysqlnd
(mysql本机驱动/否则你不会有那个未定义的函数),你也可以使用get_result()
:
$query = "SELECT * FROM photos WHERE cata=? OR catb=? OR catc=?";
$conn = $db->prepare($query);
$conn->bind_param("sss", $cata, $catb, $catc);
$conn->execute();
$results = $conn->get_result(); // i like this better
?>
<table border="1">
<tr>
<th>cata</th>
<th>catb</th>
<th>catc</th>
</tr>
<?php
while ($row = $results->fetch_assoc()) {
echo '<tr>';
echo '<td>' . $row['cata'] . '</td>';
echo '<td>' . $row['catb'] . '</td>';
echo '<td>' . $row['catc'] . '</td>';
echo '</tr>';
}
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)