在此MySQLi / PHP代码段上难以维护

詹姆斯·巴雷特

我有一段有效的代码,但是很乱。目的是从用户搜索中检索所有相关的行。例如:如果用户搜索“ Jo”,它将检索John和Josh:

起作用的代码:

if($_SERVER["REQUEST_METHOD"] == "POST") {
  $search = trim(filter_input(INPUT_POST,"user_search",FILTER_SANITIZE_SPECIAL_CHARS));
  $search = preg_replace("#[^0-9a-z]#i", "", $search);

  if(!isset($error_message)) {
    $query = $db->query("SELECT * FROM User WHERE U_Forename LIKE '%$search%'
                    OR U_Surname LIKE '%$search%' OR U_Team LIKE '%$search'
                    OR U_City LIKE '%$search%'");
  }
}

  <?php
          if ($query->num_rows == 0) {
            $output = "No results found!";
          } else {
            echo "<h2>Search results for: " . $search . "</h2>";
            while($row = $query->fetch_assoc()) {
              $id = $row['U_ID'];
              $firstname = $row['U_Forename'];
              $lastname = $row['U_Surname'];
              $team = $row['U_Team'];
              $city = $row['U_City'];
              echo "<div class='searchresults'>";
              echo "<p> Name: " . ucfirst($firstname) . " " . ucfirst($lastname) . "</p>";
               echo "<p> Favourite Team: " . ucfirst($team) . "</p>";
              echo "<p> Location: " . ucfirst($city) . "</p>";
              echo "<a class='lift' href='profile.php?=[$id]'>View Profile</a>";
              echo "<a class='lift' href='#'>Follow Driver</a>";
              echo "</div>";
            }
          }
          ?>

我尝试过的是:

function getSearchResults($search) {
  global $db;
  $searchArray = array();
  $query = $db->query("SELECT * FROM User WHERE U_Forename LIKE '%$search%'
                  OR U_Surname LIKE '%$search%' OR U_Team LIKE '%$search'
                  OR U_City LIKE '%$search%'");
  if ($query->num_rows == 0) {
    echo "No results found!";
  } else {
    while($row = $query->fetch_assoc()) {
      $searchArray['U_ID'] = $row['U_ID'];
      $searchArray['U_Forename'] = $row['U_Forename'];
      $searchArray['U_Surname'] = $row['U_Surname'];
      $searchArray['U_Team'] = $row['U_Team'];
      $searchArray['U_City'] = $row['U_City'];
    }
  }
  return $searchArray;
}

但是,这将不起作用,因为仅来自fetch_assoc()的第一个结果存储在$ searchArray中,而没有别的!有没有人有什么建议?我不确定接下来从哪里开始编码。

詹姆士。

大能力

每次运行循环时,您都将覆盖数组。您需要创建一个数组数组,以便可以返回一个数组。下面,我简化了您的代码,以将当前行追加到您要返回的数组中。然后,您可以foreach对返回的数据进行操作并显示您的代码

while($row = $query->fetch_assoc()) {
  $searchArray[] = $row;
}

另外,一个提示:将数据库连接器作为参数传递,并避免将其用作全局参数(这是另一种最佳实践)

function getSearchResults($search) {
   global $db;

成为

function getSearchResults($search, $db) {

最后但并非最不重要的一点是,不要让您的函数回显事情(让调用此函数的图层执行此操作)。相反,只需返回一个空数组

if ($query->num_rows == 0) {
   return $searchArray;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在此代码段中这是什么?

来自分类Dev

在此代码上添加表头?

来自分类Dev

在此SendInput代码段中我在做什么错?

来自分类Dev

为什么在此代码段中需要eval()?

来自分类Dev

为什么在此ClojureScript代码段中使用^字符?

来自分类Dev

为什么我在此特定代码中出现段错误?

来自分类Dev

有多少个对象在此代码段创建

来自分类Dev

* max_element()如何在此代码段中工作?

来自分类Dev

我在此SendInput代码段中做错了什么?

来自分类Dev

在此代码段中realloc有什么作用?

来自分类Dev

C ++在此代码段中“ <”和“>”是什么意思?

来自分类Dev

如何在此代码段中使GHC识别SingI实例?

来自分类Dev

this.props.txt在此代码段中做什么?

来自分类Dev

为什么在此ClojureScript代码段中使用^字符?

来自分类Dev

如何在此代码段中推断出类型?

来自分类Dev

在此简单代码上添加stop onmouse

来自分类Dev

在此php代码中target = _Blank

来自分类Dev

使用mysqli()转换PHP代码

来自分类Dev

MySQLi 显示到 PHP 代码

来自分类Dev

在此PHP文件之前

来自分类Dev

在此PHP文件之前

来自分类Dev

。=在此代码中如何工作?

来自分类Dev

如何在此代码上为FragmentTransaction设置CustomAnimations

来自分类Dev

为什么PHPStorm中的PHPDoc在此代码上出错?

来自分类Dev

为什么在此Python代码上出现断言错误?

来自分类Dev

PHP 示例代码从 mysqli 到 PDO 的翻译

来自分类Dev

为什么Stream.limit无法按预期在此代码段中正常工作?

来自分类Dev

为什么JMockIt在此代码段中模拟类X的getter X.getE()?

来自分类Dev

在此模板元编程代码段中究竟发生了什么?

Related 相关文章

热门标签

归档