mysqli php搜索表单空白

时间:2015-02-23 15:18:22

标签: php mysql mysqli

我正在为一个我参与的小项目学习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>

感谢您的帮助。

1 个答案:

答案 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 statementsPDO with prepared statements他们更安全