简单的搜索函数总是返回0结果


Simple search function return always 0 results

我有这个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 *从图片WHERE image_title LIKE "%Volvo%"

并且我收到了1个正确的结果。在这一页我看到了0 results。试着玩fetch:

$res->fetch_assoc()
$res->fetchAll()
$res->fetch()

没有显示任何结果。我肯定是一些非常愚蠢和简单的错误,但我看不到它。请帮帮忙。

我没有Call to a member function bind_param() on a non-object这是我的错误,而我已经提出了从一个答案的变化。0结果

UPDATE:当前代码

$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"; 
    }
}

UPDATE 2: DB connection checked-> result is 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。下次打开错误报告,看看这些愚蠢的错误

try this:(更新你的代码)

$likeString= "%{$_POST['search']}%";
$stmt = $db->prepare("SELECT * FROM images WHERE image_caption LIKE ?");
$stmt->bind_param('s', $likeString);
$stmt->execute();
$result = $stmt->get_result();
    while ($row = $result->fetch_array(MYSQLI_NUM))
    {
        foreach ($row as $r)
        {
           echo "<br>Title: " . $r['image_caption'];                
        }
        print "'n";
    }

<?php
  $conn = new mysqli("localhost","mydbUsername","myPass","myDbName");
  /* check connection */
  if ($conn->connect_errno) { 
    printf("Connect failed: %s'n", $conn->connect_error); 
    exit(); 
  }
  $query = "SELECT * FROM images WHERE image_caption LIKE %".$_POST['search']."%";
  if ($result = $conn->query($query)) {
    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
        echo "<br> Title: ". $row["image_caption"]);
    }print "'n";
    /* free result set */
    $result->free();
  }
  /* close connection */
  $conn->close();
?>