我正在尝试在我的网站上创建搜索菜单,我正在使用php和mysqli,我已经创建了所有必需的凭据,但它仍然向我显示了一些错误,任何人都可以帮助我。 的 analyze.php
<!DOCTYPE html>
<html>
<head>
<title>Gtec NetWork</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<link href="asset/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
</head>
<body>
<div class="navbar">
<div class="navbar-inner">
<a class="brand" href="#">GTEC Network</a>
<ul class="nav">
<li><a href="#">Home</a></li>
<li><a href="#">Boys</a></li>
<li><a href="#">Girls</a></li>
</ul>
</div>
</div>
<div class="container-fluid">
<div class="row">
<div class="span12">
<form method="POST" action="search.php">
<label>Search
<input type="text" name="keywords" >
<input type="submit" class="btn btn-primary lg" value="Search">
</label>
</form>
</div>
</div>
</div>
</body>
</html>
的search.php
<?php
require_once 'lib/db.php';
?><?php
if (isset($_GET['keywords'])) {
$keywords = $db->escape_string($_GET['keywords']);
$query = $db->query("
SELECT *
FROM user
WHERE registernumber LIKE '%{$keywords}%'
OR username LIKE '%{$keywords}%'
"
);
$run = mysqli_query($query);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Gtec NetWork</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<link href="asset/bootstrap/css/bootstrap.min.css" rel="stylesheet" media="screen">
</head>
<body>
<div class="navbar">
<div class="navbar-inner">
<a class="brand" href="#">GTEC Network</a>
<ul class="nav">
<li><a href="#">Home</a></li>
<li><a href="#">Boys</a></li>
<li><a href="#">Girls</a></li>
</ul>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-4">
Found<?php echo $query->num_rows;?> results.
<?php
if ($query->num_rows) {
while($r = $query->mysqli_fetch_array())
{
?>
<div class="gylphicon glyphicon-heart">
<a href="#"><?php echo $r->username;?></a>
</div>
<?php }
}?>
</div>
</div>
</div>
</body>
</html>
问题是
实测值 注意:未定义的变量:第39行的C:\ xampp \ htdocs \ php \ search.php中的查询
注意:尝试在第39行的C:\ xampp \ htdocs \ php \ search.php中获取非对象的属性 结果。 注意:未定义的变量:第41行的C:\ xampp \ htdocs \ php \ search.php中的查询
注意:尝试在第41行的C:\ xampp \ htdocs \ php \ search.php中获取非对象的属性
请帮帮我
答案 0 :(得分:0)
$ query在if-block
中声明if (isset($_GET['keywords'])) { ... }
因此,如果$ _GET [&#39;关键字&#39;]未设置,则$ query不会在稍后的脚本中定义。
也许你可以这样做:
if (isset($_POST['keywords'])) {
$keywords = $db->escape_string($_POST['keywords']);
$query = $db->query("
SELECT *
FROM user
WHERE registernumber LIKE '%{$keywords}%'
OR username LIKE '%{$keywords}%'
"
);
} else {
$query = $db->query("
SELECT *
FROM user
"
);
}
答案 1 :(得分:0)
正如@dlegall已经指出的那样,当然可以肯定的是:你得到的错误来自keywords
当前未设置的事实。
从那里,有两点:
无论如何,您的代码必须来阻止这种情况,因此您无法在不进行调查的情况下直接使用底部(HTML)部分中的任何$query->...
。
所以你可以使用类似的东西:
<div class="col-md-4">
<?php if (@$query) { ?>
Found<?php echo $query->num_rows;?> results.
<?php
if ($query->num_rows) {
while($r = $query->mysqli_fetch_array())
{
?>
<div class="gylphicon glyphicon-heart">
<a href="#"><?php echo $r->username;?></a>
</div>
<?php }
}?>
<?php } else { ?>
No keywords available.
<?php } ?>
</div>
这样您的应用程序现在能够响应任何情况
现在,您可以测试当前导致keywords
为空的内容:这可能是一个完全不同的问题。