php - 在 PHP 中搜索并获得双重结果
问题描述
这是我用来从 PHPMyAdmin 的数据库 Mysql 中搜索的 PHP 代码。但是当我得到结果时,它显示为两倍。我不明白为什么它是双重的。如果它用于“foreach”循环,那么我将使用什么来代替它?请帮我写代码。
<?Php
?>
<html>
<head>
<style>
@media print {
#printPageButton {
display: none;
}
#another {
display: none;
}
}
.border {
border-style: double;
border-color: blue;
}
</style>
<title>Demo of Search Keyword using PHP and MySQL</title>
</head>
<body>
<?Php
error_reporting(0);
include "config_1.php";
$todo=$_POST['todo'];
$search_text=$_POST['search_text'];
if(strlen($serch_text) > 0){
if(!ctype_alnum($search_text)){
echo "Data Error";
exit;
}
}
if(isset($todo) and $todo=="search"){
$type=$_POST['type'];
$search_text=ltrim($search_text);
$search_text=rtrim($search_text);
if($type<>"any"){
$query="select * from billbagnan where name='$search_text'";
}
$count=$dbo->prepare($query);
$count->execute();
$no=$count->rowCount();
foreach ($dbo->query($query) as $row){
echo "
<table class='border' style='text-align:center;' width='900'>";
echo "</td><td width='400' valign=top>";
echo " Full records here ";
echo "<table><tr><th>ID</th><th>Name</th><th>Institution</th></tr>";
foreach ($dbo->query($query) as $row){
echo "<tr><td>$row[id]</td><td>$row[name]</td><td>$row[instn]</td>
</tr>";
}
echo "</table>";
echo "</td></tr></table>";
}
}
?>
解决方案
您正在查询中嵌套查询,因此这很可能会生成包含所有数据的多个表。您还执行了 3 次查询(一旦使用 2 准备好query()
)。
而是运行一次查询(prepare()
and execute()
),如果有行,则循环结果...
// If there are rows
if ($count->rowCount() > 0 ) {
echo "<table class='border' style='text-align:center;' width='900'>";
echo "</td><td width='400' valign=top>";
echo " Full records here ";
echo "<table><tr><th>ID</th><th>Name</th><th>Institution</th></tr>";
// Loop over rows and display data
while ( $row = $count->fetch(PDO::FETCH_ASSOC)) {
您还使用了准备和执行,但没有使用绑定变量,所以您真的应该使用...
if($type<>"any"){
$query="select * from billbagnan where name=?";
$count=$dbo->prepare($query);
$count->execute([$search_text]);
}
else {
$query="select * from billbagnan";
$count=$dbo->prepare($query);
$count->execute();
}
推荐阅读
- dpdk - 将 DPDK 与分叉驱动程序或 VFIO 一起使用时性能会降低吗?
- wordpress - SSL:Certbot + AWS Lightsail + LetsEncrypt + 真正简单的 SSL 插件
- bash - 将文件复制到其相应的目标文件夹
- php - PDO 从托管到 SQL Server
- debugging - 不控制起点源时如何调试 .NET5 源
- oracle - 无法解析 ORA-12514,TNS:监听器当前不知道连接描述符中请求的服务
- docker - 从 node-chrome-debug docker 映像在 localhost 上使用 API
- pine-script - 如何突出显示 HH-LL 指标中的连续标签?
- javascript - 如何更改导航向下滚动?
- node.js - 当 Visual Studio 安装程序已经安装 NodeJS 时,我必须安装它吗?