开发者

PHP Multiple Dropdown

This is my html partial code

<select name="number[]" style="width: 350px;" multiple="multiple" size="2">
<option value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
<option value="four">four</option>
</select>

PHP code

$name = $_POST["name"];
$number= $_POST["number"];
$sql开发者_JAVA百科 = mysql_query("SELECT * FROM users WHERE name LIKE '%$name%' AND ");

What should i add after AND for the number so that query will work? I tried foreach but it didnt exactly work in query.


How about:

$name = $_POST["name"];
$number= $_POST["number"];

if(!is_array($number)){
  // some error message or what.
}

$squery = '';
$a = array();
foreach($number as $n){
  // do some validation for $n
  // $number should be an array, so don't validate it.
  $a[] = "`number` = '$n'";
}
$squery = implode(' OR ',$a);
unset($a);

$query = "SELECT * FROM users WHERE `name` LIKE '%$name%' AND (".$squery.")";
$res = mysql_query($query);


something like this I suppose

$sql = mysql_query("SELECT * FROM users WHERE name LIKE '%$name%' AND number IN (" . implode(',', $_POST['number']) . ')');

the implode documentation

also please not you should be careful about escaping the data coming from users or your website is going to be SQL injection vulnerable.


$number= $_POST["number"][i];

put this in your loop


My approach would be something like this:

<?php
if(is_array($_POST['number']))
{
   $numbers = implode("','", array_walk($_POST['number'],' mysql_real_escape_string')));
   $result = mysql_query("SELECT * FROM users WHERE name LIKE '%" . mysql_real_escape_string($name%) . "' AND number IN ('" . $numbers . "')") or die(mysql_error());
}
?>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜