Поиск по критериям в PHP

программирование php MySQL базы данных поиск

Ребята подскажите, где я накосячил?

<?

@ $db = mysql_connect("localhost",'root','');
if (!$db) {echo "ERROR: Failed to connect database"; exit;}
mysql_select_db('vipagent_'.$LANG);
mysql_query('SET NAMES cp1251');

//создаем массив полей, которые могут использоваться в запросе
$_columns = array('code'=>NULL,'street'=>NULL,'price1'=>NULL,'price2'=>NULL,'rooms1'=>NULL,'rooms2'=>NULL,'floor1'=>NULL,'floor2'=>NULL,'date1'=>NULL,'date2'=>NULL);
$query_filter = '';
$query_filter_array = array();
// проверяем отправили ли форму
//смотрим что у нас пришло с поста
if ($_POST['submit']){

foreach($_columns as $key=>$value){
if(isset($_POST[$key])){
$query_filter_array[] = '`'.$_POST[$key]. '` LIKE \''.$_POST[$key].'\'';
}
}
}
//проверяем было ли что-то заполнено
//если да то разбираем массив
if(!empty($query_filter_array)){
$query_filter = " WHERE ".implode(' AND ', $query_filter_array);
}

$tQuery ='SELECT * FROM realty';

$test = $tQuery.$query_filter;
echo $test; // проверка сложенного запроса
//собираем весь запрос и выполняем
$result = mysql_query($test);
if (!$result) print ("failed\n");

WHILE ($row = mysql_fetch_row($result))
$number = mysql_numrows($result);
if (!$number) print("failed 2 \n");
$i = 0;


PRINT "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"-2\">
<b>There are $number users found</b></font><p>";
PRINT "<table cellpadding=5>";
PRINT " <TR bgcolor=#000066> <td><font face=\"Verdana,
Arial,Helvetica, sans-serif\" size=\"-2\" color=white><b>Street
</b></font></td>";

WHILE ($i < $number):
$street = mysql_result($street, $i,"street");

if ($i%2 == 0) {
PRINT "<tr bgcolor=#E8E8E8>
<td><font face=\"Verdana, Arial, Helvetica,
sans-serif\" size=\"-2\"> $street</font></td>
";
} else {
PRINT "<tr bgcolor=#cccccc>
<td><font face=\"Verdana, Arial, Helvetica,
sans-serif\" size=\"-2\"> $street</font></td>
";
}
$i++;
ENDWHILE;
PRINT "</table>";

?>

при проверке сложенного запроса выдает: SELECT * FROM realty WHERE `dm123` LIKE 'dm123'failed
ну а в принципе должно быть так: SELECT * FROM realty WHERE code LIKE 'dm123'
Ответы:
$query_filter_array[] = '`'.$_POST[$key]. '` LIKE \''.$_POST[$key].'\'';
Дык посмотрите внимательно на формирование запроса:
$_POST[$key].' LIKE '.$_POST['key']
т. е. вы пиишете значение_переменной LIKE значение_переменной
вместо ключ_массива LIKE значение
как я понимаю, запрос формировать надо так:
$query_filter_array[] = '`'.$key. '` LIKE \''.addslashes($_POST[$key]).'\'';
Серьёзный такой говнокод. Ещё и сайт свёрстан с использованием <font>. Просто супер!


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.