<option>的值是数组</option>

时间:2012-11-16 03:02:45

标签: php

我只是在想这是否可能

这是......的代码。

    <?php
    $temp1 = 'anyvalue1';
    $temp2 = 'anyvalue2';
    ?>
<form action='next.php' method='post'>
    <select name='dropdown'>
    <option value='any'>item1</option>
    <option value='anyone'>item2</option>
    <option value='<? $dual = array("$temp1","temp2"); ?>'>item3</option>
    </select>
<input type='submit'>
</form>

正如您在顶部看到的那样,item3代码行是否可行?然后我用它,在这个sql代码中(这个sql代码只在下面的代码中)

$keyword = $_POST['dropdown'];
$res = mysql_query("select * from teybol where field1='$keyword[0]' and field2='keyword[1]'");

然后通过$res

的结果生成记录

2 个答案:

答案 0 :(得分:0)

当由Javascript或PHP解释时,HTML option的值始终是字符串。但是,您可以将其格式化,以便以后可以将其转换为数组:

<option value='["$temp1","$temp2"]'>item3</option>

<option value='{"$temp1","$temp2"}'>item3</option>

答案 1 :(得分:0)

不,这样就不可能了。您必须找到“双重”选项的字符串表示形式:

<option value='<?php echo htmlspecialchars("$temp1-$temp2") ?>'>item 3</option>

这假设$temp1$temp2

中没有短划线

然后当你查询:

$keywords = array_map('mysql_real_escape_string', explode('-', $_POST['dropdown']));
$sql = "select * from teybol where field1='$keywords[0]'";
if (count($keywords) > 1) {
    $sql .= " and field2='keywords[1]'";
}
// use $sql to perform the query

您还可以使用JSON格式 - 使用json_encode()json_decode() - 来表示字符串;在-这样的分隔符无法可靠使用的情况下,它会有所帮助。

注意您应该转义您在SQL中使用的变量;我在这里使用array_map()对每个关键字应用mysql_real_escape_string

注意2 您应该转移到PDO或mysqli并使用预准备语句。