搜索实际上是工作的,但返回不止一个值


Search is actually working but returning more than 1 value

我正在搜索数据库中至少一个数据。此外,我想看到所有的数据与数据库内返回相同的名称。但是当我只搜索一个数据时,它总是返回数据库中的所有数据。

这是我正在做的"search"代码:

// $_POST['search'] is for the button
if (isset($_POST['search'])) {
 // $_GET['prodName'] column name in the database
 $search = isset($_GET['prodName']);
 $sql = "SELECT * FROM `newitem` WHERE `prodName` = '$search'";
 $result = mysqli_query($conn, $sql);
 if (mysqli_num_rows($result) > 0) {
  while ($row = mysqli_fetch_assoc($result)) {
   echo "result found";
  }
 } else {
  echo "result not found";
 }
}

这是HTML:

<form method="POST" action="" class="form-horizontal">
 <div class="form-group">
  <label for="search" class="control-label col-md-2">Search</label>
  <div class="col-md-8">
   <input type="text" name="search" class="form-control" id="search" placeholder="Search Product Name">
  </div>
  <div class="col-md-2">
   <input type="submit" name="search" class="btn btn-info" value="SEARCH">
  </div>
 </div>
</form>

我也试了一下:

if(mysqli_num_rows($result) => 1)

有一个错误提示:

Parse error: syntax error, unexpected '=>' (T_DOUBLE_ARROW) in C:'wamp'www'OrderingSystem'account.php on line 142

请帮我做这个。非常感谢。

我还尝试了这个: if(mysqli_num_rows($result) => 1)

=>是关联数组的分隔符,这就是为什么你目前得到解析错误。

您可能想使用的是>=或只是普通的>,如"高于或等于"或"高于"。

那么这将失败,因为它总是被认为是"设置"的。

$search = isset($_GET['prodName']);

改为:

$search = $_GET['prodName'];

或者您可能打算将其用作三元操作符

例如:

$var = !empty($_GET['var']) ? $_GET['var'] : "";

另外,您的代码对SQL注入是开放的。使用预处理语句

  • https://en.wikipedia.org/wiki/Prepared_statement

其他参考(s):

  • http://php.net/manual/en/language.types.array.php

代码可能包含语法错误。请参考以下链接http://php.net/manual/en/mysqli.error.php和http://php.net/manual/en/function.error-reporting.php并将其应用到您的代码中。

检查$result = mysqli_query($conn, $sql);的错误。

错误报告添加到文件的顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code

旁注:显示错误应该只在登台,而不应该在生产中。