我在数据库中搜索至少一个数据。此外,我想看到在数据库中返回的所有具有相同名称的数据。但是当我只搜索一个数据时,它总是返回数据库中的所有数据。
以下是我正在进行的“搜索”代码:
// $_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
请帮我这个。 非常感谢。
答案 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.php和http://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
旁注:只应在暂存时进行显示错误,而不是生产。