我有这个 php 代码
if(isset($_POST['submit'])){
$likeString = '%' . $_POST['search'] . '%';
$query = $conn->prepare("SELECT * FROM images WHERE image_caption LIKE ?");
$query->bind_param('s', $likeString);
$query->execute();
var_dump($likeString);
if (!$query) {
printf("Query failed: %s\n", $mysqli->error);
exit;
}
if($res->num_rows > 0) {
while ($row = $res->fetch_assoc()) {
echo "<br>Title: " . $row['image_caption'];
}
} else {
echo " <br> 0 results";
}
}
var_dump($likeString)
正确显示了我通过搜索表单发布的单词。我也试过直接在 phpmyadmin 中运行这个查询
SELECT * FROM images WHERE image_caption LIKE "%Volvo%"
我收到了 1 个正确的结果。在页面上,我看到 0 个结果
。尝试使用 fetch:
$res->fetch_assoc()
$res->fetchAll()
$res->fetch()
它们都没有显示任何结果。我敢肯定这是一个非常愚蠢和简单的错误,但看不到它。请对此提供帮助。
我没有对非对象的成员函数 bind_param() 的调用
这是我的错误,而我已经从其中一个答案中提出了建议的更改。问题仍然存在 - 0 个结果
更新:当前代码
$likeString = "%{$_POST['search']}%";
$query = $conn->prepare("SELECT * FROM images WHERE image_caption LIKE ? ");
$query->bind_param('s', $likeString);
$query->execute();
if($query->num_rows > 0) {
while ($row = $query->fetch()) {
echo "<br>Title: " . $row['image_caption'];
}
} else {
echo " <br> 0 results";
}
}
更新 2:已检查数据库连接-> 结果是 Connected successfully
$servername = "localhost";
$username = "mydbUsername"; // it's changed for the question
$password = "myPass"; // it's changed for the question
$dbname = "myDbName"; // it's changed for the question
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
最佳答案
您正在使用 $res
而它未定义...您必须改用 $query
。
下次打开错误报告以查看这些愚蠢的错误
关于php - 简单的搜索功能总是返回 0 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40584729/