我正在做一个小项目,我希望能够在数据库中搜索与搜索相关的所有项目
我的问题是,当我在下面使用我的代码时,只会得到一个结果,而不是所有符合我的查询结果的数组。我已经看到一些建议使用fetchAll()的解决方案,但似乎没有输出任何内容。
PHP查询的外观。
if(isset($_POST['search'])){
if(preg_match("/^[a-zA-Z]+/", $_POST['sname'])){
$search = $_POST['sname']; //name in form
$pdo = & dbconnect();
$userid = $_SESSION['user_id'];
$sql = "SELECT * FROM movie_dets Where user_id=? and Title LIKE '%" .$search."%'";
$stmt=$pdo->prepare($sql);
$stmt->execute([$userid]);
if(!$stmt)
{
die("Database pull did not return data");
}
$row=$stmt->fetch();
}
}
然后我的html中有一个foreach循环,看起来像这样
<div class="row">
<?php
$loop = 0;
foreach ($stmt as $row): //loop through result set ?>
<div class="column" >
<div>
<figure>
<img src="<?php echo "/.../".$row['Cover'] ?>" alt="<?php echo $row['Title']; ?> cover" />
<figcaption>
...
</figcaption>
</figure>
</div>
</div>
<?php
$loop++;
if ($loop % 4 ==0) //to display four results the wrap.
{
echo "</div> <div class='row'>";
}
?>
<?php endforeach ?>
</div>
在我的数据库中,有两个标题称为“冻结”。给定“ fr”搜索词时,这应该输出所有行。取而代之的是,它仅获取其中之一。