搜索实际上正在工作但返回的值超过1

时间:2015-10-07 13:35:57

标签: php

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

以下是我正在进行的“搜索”代码:

// $_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

请帮我这个。 非常感谢。

1 个答案:

答案 0 :(得分:7)

  

我也试试这个:    if(mysqli_num_rows($result) => 1)

=>是关联数组的分隔符,这就是您目前收到该解析错误的原因。

您可能打算使用的是>=或仅仅>,如“高于或等于”或“高于”。

然后这将使您失败,因为它将始终被视为“设置”。

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

将其更改为:

$search = $_GET['prodName'];

或者您可能打算将其用作ternary operator

例如:

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

另外,您的代码对SQL注入开放。使用准备好的声明。

其他参考文献:

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

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

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。