我已经建立了一个页面,显示整个MySQL表,但我现在想添加一个搜索到它。
我所做的是设置它,所以当用户搜索时,它显示匹配的结果,如果没有搜索,它显示整个表。它显示了表,但当我搜索它返回没有数据(其他一切都在工作)
这是我得到的搜索…
<?php
if(isset($_POST['submit'])){
if(isset($_GET['query'])){
if(preg_match("/^[ a-zA-Z]+/", $_POST['query'])){
$query=$_GET['query'];
$q=mysql_query("SELECT * FROM employees WHERE name LIKE '%$query%'" ) or die("could not search");
$result = mysql_query($q) or die(mysql_error());
while ($row = mysql_fetch_array($result)){
我想不出它需要怎么格式化。我的搜索框是"查询"。任何帮助将不胜感激!
——编辑——我不能让它工作还是…指针吗?
<?php if(!empty($_SESSION['LoggedIn']) && !empty($_SESSION['Username']){?><br /><form method="post" action="search.php">
<input name="query" type="text" required class="forms" id="query" placeholder="Search name..." size="35" />
<input type="submit" name="submit" id="submit" value=" Search " HEIGHT="25" WIDTH="70" BORDER="0" ALT="Submit"><button onclick="window.location.href='search.php'"> Clear </button></form><br />
<table border="0" cellspacing="2" class="data"><tr>
<td align="center" class="idtd"><strong>ID</strong></td>
<td align="center" class="nametd"><strong>Name</strong></td>
<td align="center" class="positiontd"><strong>Position</strong></td>
<td align="center" class="banktd"><strong>Bank</strong></td>
<td align="center" class="pooltd"><strong>Pool</strong></td>
<td align="center" class="starttd"><strong>Start Date</strong></td>
<td align="center" class="endtd"><strong>End Date</strong></td>
<td align="center" class="ghourstd"><strong>Gross Hours</strong></td>
<td align="center" class="chourstd"><strong>Cont'd Hours</strong></td>
</tr></table>
<?php
if(isset($_POST['submit'])){$where = !empty($_GET['query']) ? $db->real_escape_string($_GET['query']) : "";
$q = mysql_query("SELECT * FROM employees WHERE name LIKE '% " . $where . "%'") or die(mysql_error());
while ($row = mysql_fetch_array($result)){
echo "<table class='data' border='0' cellspacing='2'><tr>
<td align='center' class='idtd'>".$row['id']."</td>
<td align='center' class='nametd'>".$row['name']."</td>
<td align='center' class='positiontd'>".$row['position']."</td>
<td align='center' class='banktd'>".$row['bank']."</td>
<td align='center' class='pooltd'>".$row['pool']."</td>
<td align='center' class='starttd'>".$nStartDate."</td>
<td align='center' class='endtd'>".$row['enddate']."</td>
<td align='center' class='ghourstd'>".$row['grosshours']."</td>
<td align='center' class='chourstd'>".$row['contractedhours']."</td><tr ></table>";}}}} else{ ?>
<h1>You must be logged in to view this page.</h1><?php } ?>
使用下面的一些变量
$condition = '1 = 1';//which will result all rows (1=1 is TRUE)
if($_GET['query'])
{
$query=$_GET['query'];
$condition = " name LIKE '%$query%'";// this will search only with querydata
}
$q=mysql_query("SELECT * FROM employees WHERE '$condition'" ) or die("could not search");
$result = mysql_query($q) or die(mysql_error());//you have double mysql_query() remove this
最重要的是不要再使用mysql_*函数了,他们早就被弃用了,使用mysqli_*或者pdo,不要以为这些是新的&很难,一旦看了教程的例子。
我相信你在SQL语法中需要一个句号:
$q=mysql_query("SELECT * FROM employees WHERE name LIKE '%.$query.%'" ) or die("could not search");
我就用这个:
if(isset($_POST['submit'])){
$where = !empty($_GET['query']) ? $db->real_escape_string($_GET['query']) : "";
$q = mysql_query("SELECT * FROM employees WHERE name LIKE '% " . $where . "%'") or die(mysql_error());
while ($row = mysql_fetch_array($result)){
// ToDo
}
}
给你的信息:你做了两次mysql_query()
:第一次是字符串,第二次是结果-第二次是错误的。