按日期名称搜索结果

时间:2014-09-20 03:57:33

标签: php html mysql

我现在已经有一段时间了。我试图找到它将搜索名称和日期的地方。然后显示结果。

我在编码的这一部分需要一些帮助。

$sql = mysql_query("SELECT * FROM info WHERE patient_name '".$search."'  date_of_service between '".$from."' AND '".$to."'");

我收到此消息

  

警告:mysql_fetch_assoc()要求参数1为资源,布尔值在第40行的C:\ xampp \ htdocs \ xampp \ prive_tc \ testing2.php中给出

我的完整代码

<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('prive_ts');

$search = $_GET['search_box'];
$from = $_GET['from']; // or $from = $_get['from']; 
$to = $_GET['to'];  // or $to = $_get['to']; 


$sql = mysql_query("SELECT * FROM info WHERE patient_name '".$search."'  date_of_service between '".$from."' AND '".$to."'");


?>

<!-- form -->
<form name="search_form" method="GET" action="#">

Search: <input type="text" name="search_box" value="" />
Dates&nbsp; From : <input type="text" name="from" value=""/>
            To : <input type="text" name="to" value=""/> 
<input type="submit" name="search" value="Look up Patient ...">

</form>
<!-- end -->


<table width="70%" cellpadding="5" cellspace="5">

<tr>

    <td><strong>Care Provider</strong></td>
    <td><strong>Patient Name</strong></td>
    <td><strong>Date of Time</strong></td>
    <td><strong>Time In</strong></td>
    <td><strong>Time Out</strong></td>
    <td><strong>Remarks</strong></td>
</tr>


<?php while ($row = mysql_fetch_assoc($sql)){ ?>
<tr>
    <td><?php echo $row['care_provider']; ?></td>
    <td><?php echo $row['patient_name']; ?></td>
    <td><?php echo $row['date_of_service']; ?></td>
    <td><?php echo $row['time_in']; ?></td>
    <td><?php echo $row['time_out']; ?></td>
    <td><?php echo $row['remarks']; ?></td>
</tr>
<?php } ?>


</table>

2 个答案:

答案 0 :(得分:3)

您忘记了=查询条款中的WHERE等号:

$sql = mysql_query("SELECT * FROM info WHERE patient_name = '".$search."' AND (date_of_service BETWEEN '".$from."' AND '".$to."')");
                                                         ^^ here          ^^ here AND/OR

顺便说一下,你不应再使用mysql_函数了。它们已被弃用,不再维护。您应切换到更好的扩展名mysqli或PDO并使用预准备语句。不要直接在语句上连接用户输入。

答案 1 :(得分:3)

此行缺少等号和ORAND

WHERE patient_name  '".$search."'  date_of_service between ...
                   ^ = there     ^ OR or AND

DO

WHERE patient_name = '".$search."' AND date_of_service between ...

WHERE patient_name = '".$search."' OR date_of_service between ...

取决于您要使用的内容ANDOR


另外,使用mysqli with prepared statementsPDO with prepared statements他们更安全

因为您的现有代码对SQL injection开放。