2013-08-09 3 views
0

Я хотел бы вернуть строки, соответствующие пользовательскому вводу для цены, то есть от $ до $.mysql SELECT диапазон цен php

<form action="" method="post"> 
    <input class="price" name="p1" type="text"> 
    to 
    <input class="price" name="p2" type="text"><br> 
    <input type="submit" name="sprice" value="go" > 
</form> 

Вот запрос выбора. Он не возвращает строки в зависимости от ценового диапазона.

if (isset($_POST["sprice"]) && (!empty($_POST["p1"])) && (!empty($_POST["p2"]))){ 
    $p1 = $_POST["p1"]; 
    $p2 = $_POST["p2"]; 

    $paginate = new pagination($page 
     , 'SELECT * FROM test where price BETWEEN "$p1" AND "$p2" ORDER BY id desc' 
     , $options 
    ); 

} 
+0

Я не уверен в синтаксисе mysql, но разве вам не нужно использовать одинарные кавычки, чтобы указать литеральные значения в виде переходов 'между'? – collapsar

+0

Я пробовал это, но это дает мне синтаксическую ошибку, что я сделал вначале. – user2666864

+1

, конечно, вам нужно изменить кавычки, окружающие весь ваш выбор; try '" SELECT * FROM test, где цена BETWEEN '$ p1' AND '$ p2' ORDER BY id desc "' – collapsar

ответ

1
'SELECT * FROM test where price BETWEEN "$p1" AND "$p2" ORDER BY id desc' 

выше форма не заменяющие переменные, вам это нужно

"SELECT * FROM test where price BETWEEN '$p1' AND '$p2' ORDER BY id desc" 

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.single

+0

Хотя это может быть технически корректным, вам нужно все же исправить вопиющую инъекцию sql. – akatakritos

+0

, но он не возвращает строки, соответствующие цене. – user2666864

+0

и исправление html-кода
cske

0

используйте следующий код

  SELECT * FROM test where price BETWEEN '$p1' AND '$p2' ORDER BY id desc" 
      SELECT * FROM test where price >=$p1 AND price<=$p2 ORDER BY id desc" 
0

Вы можете использовать AND и оператор сравнения для определения диапазона.

"SELECT * FROM test where price where price >= '$p1' AND price <= '$p2' ORDER BY id desc" 

Просто, чтобы обеспечить (Check): Попробуйте код ниже.

<?php 

$host = "localhost"; // Host name 
$username = "----"; // Mysql username 
$password = "----"; // Mysql password 
$db_name = "------"; // Database name 

$conn = mysql_connect($host, $username, $password); 
mysql_select_db($db_name, $conn) or die("cannot select DB"); 

$p1 = VALUE_To_CHECK_WITH_1; //$_POST["p1"]; 
$p2 = VALUE_To_CHECK_WITH_2; //$_POST["p2"]; 

$query = "SELECT * FROM test where price where price >= '$p1' AND price <= '$p2' ORDER BY id DESC"; 

//or you may use 
// "SELECT * FROM test where price BETWEEN '$p1' AND '$p2' ORDER BY id desc" 


$result = mysql_query($query); 
while($row = mysql_fetch_assoc($result)) { 
    $data[] = $row; 
} 

print_r($data); 

?> 
+0

Просьба указать отзыв с точки зрения комментариев/upvote/accept @ user2666864 – softvar

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