【问题标题】:I am getting only one row from database php我从数据库 php 中只得到一行
【发布时间】:2020-11-14 21:11:28
【问题描述】:

我在 search.php 中有以下 PHP 代码,用于从同一文件中的表单收集信息。它是一个搜索引擎,当我在搜索栏中输入内容时,即使我应该得到多行,我也只能得到一行。

这里是 php 脚本:

<?php

$error = "";
$con=mysqli_connect('localhost', 'root', '');
$db=mysqli_select_db($con, 'vodici');


if(isset($_POST['button'])){    //trigger button click

  $search=$_POST['search'];

  $query=mysqli_query($con,"select distinct * from users where meno like '%{$search}%' || priezvisko like '%{$search}%' || mesto like '%{$search}%' || kraj like '%{$search}%' || rok_narodenia like '%{$search}%' || email like '%{$search}%' ");

if (mysqli_num_rows($query) > 0) {
  while($row = mysqli_fetch_array($query)) {
    $div = "<div style='border: 1px solid black; border-radius: 5px;'>".$row['id'];
    $vysledok = "<h2 style='text-decoration: underline; padding-left: 2%;'>".$row['meno']."  ".$row['priezvisko']."</h2>";
    $mail = "<p style='padding-left : 2%; font-size: 11px;'><strong>Rok narodenia:</strong> ".$row['rok_narodenia']." <br><strong>E-mail: </strong> ".$row['email']."</p>";
    $mesto = "<p style='padding-left: 2%'><strong>Mesto:</strong> ".$row['mesto']." <strong>Kraj:</strong> ".$row['kraj']."</p>";
    $div_end = "</div>";
  }
}else{
    $error = "Nič sme nenašli :/ <br><br>";
  }

}

mysqli_close($con);
?>

这是表格:

<form class="search-form" action="" method="post">
                    <div class="input-group">
                        <input name="search" type="text" class="form-control" placeholder="Vyhľadať...">
                        <div class="input-group-append">
                        <button class="btn btn-secondary" type="submit" name="button"><i class="fa fa-search"></button></i>
                        </div>
                    </div>    
                    </form>
                    <p><?php if(isset($_POST['button']) && $error == "") {
                        while($row = mysqli_fetch_array($query)) {
                            echo $div,$vysledok,$mail,$mesto,$div_end;
                        }
                        }?></p>
                    <p><?php if(isset($_POST['button']) && $error !== "") {echo $error;}?></p>

我可以在这里做什么?我没有想法

谢谢

【问题讨论】:

  • 您是否直接针对 sql server 上的数据库测试了查询本身?
  • 不,我没有,但感谢您对未来的提示 :) 它现在正在工作。
  • 请注意,DISTINCT * 是矛盾的
  • 感谢您的警告,我需要立即更改

标签: php html mysql database


【解决方案1】:

您只添加了一行。您需要将每一行添加到生成的 html 中。


$result = '';
if (mysqli_num_rows($query) > 0) {
  while($row = mysqli_fetch_array($query)) {
    $div = "<div style='border: 1px solid black; border-radius: 5px;'>".$row['id'];
    $vysledok = "<h2 style='text-decoration: underline; padding-left: 2%;'>".$row['meno']."  ".$row['priezvisko']."</h2>";
    $mail = "<p style='padding-left : 2%; font-size: 11px;'><strong>Rok narodenia:</strong> ".$row['rok_narodenia']." <br><strong>E-mail: </strong> ".$row['email']."</p>";
    $mesto = "<p style='padding-left: 2%'><strong>Mesto:</strong> ".$row['mesto']." <strong>Kraj:</strong> ".$row['kraj']."</p>";
    $div_end = "</div>";
    $result .= $div. $vysledok. $mail.$mesto. $div_end ;
  }
}else{
    $error = "Nič sme nenašli :/ <br><br>";
  }

echo $result;

}

【讨论】:

    【解决方案2】:

    作为对 wakeels 回答的补偿,这是正确的,我想请您使用准备好的语句,如下面的示例所示

    
    $sql="
    SELECT `id`,`meno`,`priezvisko`,`rok_narodenia`,`email`,`mesto`,`kraj` 
    FROM `users` 
    WHERE  
       `meno`          LIKE '%?%' 
    OR `priezvisko`    LIKE '%?%' 
    OR `mesto`         LIKE '%?%' 
    OR `kraj`          LIKE '%?%' 
    OR `rok_narodenia` LIKE '%?%' 
    OR `email`         LIKE '%?%'
    ;"
    
    $stmt = $con->prepare($sql); 
    $stmt->bind_param("s", $search);
    $stmt->execute();
    
    $result = $stmt->get_result();
    while ($row = $result->fetch_assoc()) {
        echo $div,$vysledok,$mail,$mesto,$div_end;
    }
    
    

    【讨论】:

    • 我收到此错误:mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2018-03-05
    • 2017-09-19
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多