我正在为一个我参与的小项目学习PHP和MySQL,我正在尝试使用搜索功能搜索我的数据库。当我尝试加载我的页面时,它显示为空白。下面是我的search.php页面的代码。
<?php
$mysqli_db = new mysqli('localhost', 'root', 'password', 'train');
$result_tb = "";
if (!empty($_POST['SEARCH']) && !empty($_POST['search_value']) {
$e = $_POST['search_value'];
$query = 'SELECT * FROM train2015 WHERE ' .
"name LIKE '%$e%'";
$query_result = $mysqli_db->query($query);
$result_tb = '<table cellspacing="5" cellpadding="5">';
while ($rows = $query_result->fetch_assoc()) {
foreach ($rows as $k => $v) {
$result_tb .= '<tr><td>' . $k . '</td><td>' . $v . '</td></tr>';
}
}
$result_tb .='</table>';
$mysqli_db->close();
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Search</title>
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<table>
<tr>
<td>
<input type="text" name="search_value" size="30" maxlength="30"/>
</td>
<td>
<input type="submit" name="SEARCH" value="Search"/>
</td>
</tr>
</table>
</form>
<?php echo $result_tb; ?>
</body>
</html>
感谢您的帮助。
答案 0 :(得分:3)
您在条件语句末尾缺少括号,该括号应为:
if (!empty($_POST['SEARCH']) && !empty($_POST['search_value']))
^ right there
但是,最好使用isset()
作为提交按钮,因此请执行以下操作:
if(isset($_POST['SEARCH']) && !empty($_POST['search_value']))
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
会发出解析错误信号。
旁注:错误报告应仅在暂存时完成,而不是生产。
另外,正如评论中所提到的,使用它是最好和更安全的:
<?php echo htmlspecialchars($_SERVER['PHP_SELF'];) ?>
而不是您目前在表单中使用的内容。
作为旁注:
您应该考虑调查mysqli
with prepared statements或PDO with prepared statements,他们更安全。