2013-12-02 3 views
0

Я создаю два поля, которые ищут между двумя входами. используя метод GET.PHP поиск с использованием BETWEEN не работает

<form name="search"> 
    <input name="to" id="to" type="text" /> 
    <input name="end" id="end" type="text" /> 
    <input name="submit" id="submit" type="submit" /> 
</form> 
<table border="1"> 
    <tr> 
    <td>Name</td> 
    </tr> 
<?php 

if(isset($_GET['submit'])){ 

$db_host="localhost"; 
$db_username="root"; 
$db_password=""; 
$db_name="administrator"; 
$db_tb_name="customer_details"; 
$db_tb_usr_name="name"; 
$db_tb_npkgr_name="no_of_pkg"; 

mysql_connect("$db_host","$db_username","$db_password"); 
mysql_select_db("$db_name"); 

$s_name=mysql_real_escape_string($_GET['to']); 
$m_name=mysql_real_escape_string($_GET['end']); 

$query_for_result = mysql_query("SELECT * FROM $db_tb_name WHERE 
$db_tb_npkgr_name BETWEEN '%".$s_name."%' AND '%".$m_name."%'"); 

while($data_fetch=mysql_fetch_array($query_for_result)) 
{ 
?> 
    <tr> 
    <td><?php echo substr($data_fetch[$db_tb_usr_name], 0,160); ?></td> 
    </tr> 
<?php } mysql_close(); }?> 
</table> 

В этом коде вывод не отображается, но когда я использую одно поле для поиска, он работает правильно.

вот рабочий код для одного поиска. Я использую здесь LIKE-оператора.

<form name="search"> 
    <input name="to" id="to" type="text" /> 
    <input name="submit" id="submit" type="submit" /> 
</form> 
<table border="1"> 
    <tr> 
    <td>Name</td> 
    </tr> 
<?php 

if(isset($_GET['submit'])){ 

$db_host="localhost"; 
$db_username="root"; 
$db_password=""; 
$db_name="administrator"; 
$db_tb_name="customer_details"; 
$db_tb_usr_name="name"; 
$db_tb_npkgr_name="no_of_pkg"; 

mysql_connect("$db_host","$db_username","$db_password"); 
mysql_select_db("$db_name"); 

$s_name=mysql_real_escape_string($_GET['to']); 

$query_for_result = mysql_query("SELECT * FROM $db_tb_name WHERE 
$db_tb_npkgr_name LIKE '%".$s_name."%'"); 


while($data_fetch=mysql_fetch_array($query_for_result)) 
{ 
?> 
    <tr> 
    <td><?php echo substr($data_fetch[$db_tb_usr_name], 0,160); ?></td> 
    </tr> 
<?php } 
mysql_close(); }?> 
</table> 

Этот код отлично работает. Но когда я использую BETWEEN, тогда он ничего не показывает на выходе. Что случилось? Каково решение?

спасибо.

+5

'BETWEEN' не работает как команда' LIKE'. Вы не можете использовать символы подстановки ('' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Кроме того, обязательное SQL-инъекции предупреждение. –

+0

Тогда каково решение для этого кода? – Subhajit

+0

http://dev.mysql.com/doc/refman/5.0/ru/comparison-operators.html#operator_between –

ответ

3

BETWEEN не работает как команда LIKE. Вы не можете использовать символы подстановки (%). Попробуйте удалить их.

+0

Я понимаю проблему. Всем спасибо.. – Subhajit

Смежные вопросы