Я пытаюсь построить простой оператор SQL:PHP зачистки часть строки
// build sql statement
$sql = "select * from some_tbl where ";
if(strlen($mydetails['city']) > 0) {
$sql .= "cityname in (".$mydetails['city'].") and ";
}
$sql .= 'fromdate <= expirydate and expirydate >= curdate() order by rand()';
Но $ SQL отсутствует все между < и>. Отладчик показывает значение $ sql как:
select * from tbl_adsinfo where fromdate = curdate() order by rand()
Это настолько просто, что я просто потерялся. Я не думаю, что < или> являются специальными символами? Я попытался ускользнуть от них и вместо этого использовать двойные кавычки, и это одно и то же.
Что здесь?
Вы делаете это через какой-то веб-редактор? Может быть, что-то убирает то, что выглядит недействительным тегом HTML. Попробуйте изменить порядок (так что это '> ... <' вместо) или, возможно, заменив их '' </> 'сущностями и посмотрим, поможет ли это. –
повторите переменную $ mydetails ['city']. я ставлю, что по какой-то причине он пуст. – dqhendricks
Можете ли вы предоставить весь код между вашими строками $ sql, когда вы действительно запрашиваете БД? Вы вызываете 'strip_tags' в свой sql-оператор? – jasonbar