У меня есть поисковая система с html-формой, которая отправляет данные в PHP-скрипт и запрашивает базу данных MySQL. В форме html у меня есть опция, позволяющая выбрать несколько вариантов. До сих пор я помещал квадратные скобки после имени в HTML, чтобы сделать его массивом. Но я думаю, что проблема в PHP, потому что результаты неверны.
HTML
<select multiple="multiple" name='category[]'>
<option>Literature</option>
<option>History</option>
<option>Science</option>
<option>Fine Arts</option>
<option>Trash</option>
<option>Mythology</option>
<option>Phylosophy</option>
<option>Social Science</option>
<option>Religion</option>
<option>Geography</option>
</select>
search.php
$button = $_GET ['submit'];
$search = $_GET ['search'];
}
if(strlen($search)<=1)
echo "Search term too short";
else{
echo "You searched for <b><em>$search</em></b> and ";
mysql_connect("fake","fake","fake");
mysql_select_db("quinterestdb");}
mysql_real_escape_string($search);
$search_exploded = explode (" ", $search);
foreach($search_exploded as $search_each)
{
$x++;
if($x==1)
$construct .="Answer LIKE '%$search_each%'";
else
$construct .="AND Answer LIKE '%$search_each%'";
}
$cat = $_GET ['category'];
$comma_separated = implode("','", $cat);
$constructs ="SELECT * FROM tossups WHERE $construct AND Category IN('$comma_separated')";
$run = mysql_query($constructs);
Когда я использую поисковую систему, скрипт работает нормально, но все еще есть результаты с невыбранными категориями. Есть идеи?
option
должен иметь назначенный атрибутvalue
, вimplode
двойные кавычки являются дополнительными, ваш скрипт уязвим для внедрения sql, вы используете устаревшийmysql
API. - person Leri   schedule 17.06.2013