我正在搜索数据库中至少一个数据。此外,我想看到所有的数据与数据库内返回相同的名称。但是当我只搜索一个数据时,它总是返回数据库中的所有数据。
这是我正在做的"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
旁注:显示错误应该只在登台,而不应该在生产中。