0

我正在使用 PHP。value是否可以在属性中写出逻辑表达式,如下所示:

<form action="...php">
<select name="formLocation" multiple>
    <option value="AL">Alabama</option>
    <option value="AK">Alaska</option>
    //Here I try to use logical expression. But it does not work:
    <option value="'DE' OR 'IL' OR 'IN'">myTerritory</option> 
</form>

然后该选项的值进入 mySQL 查询,例如SELECT * FROM 'table1' WHERE 'states' LIKE '%states%'

我想创建一个唯一的 mySQL $query=SELECT * FROM 'table1' WHERE 'states' LIKE '%states%',而不是指定myTerritory为异常。

PS:我本可以使用以下内容:SELECT * FROM 'table1' WHERE 'states' LIKE '%DE%' OR 'states' LIKE '%IL%' OR 'states' LIKE '%IN%' 但这会使代码复杂化以进行更复杂的搜索...

4

2 回答 2

2

您可能需要重新考虑一下您的模型。听起来州和领地之间存在关系,您可能希望您的表格反映这一点。

也许您的表格可能看起来像这样:

State:
+----------------------------+-------+
| abbreviation | territoryId | sales |
+----------------------------+-------+
|           AL |           1 |   300 |
|           AK |           2 |   350 |
|           DE |           3 |   250 |
|           IN |           3 |   100 |
|           IL |           3 |   200 |
+----------------------------+-------+

那么你的表格可以简化如下:

<form action="...php">
<select name="formLocation" multiple>
    <option value="1">My Territory</option>
    <option value="2">Your Territory</option>
    <option value="3">Her Territory</option>
</form>

您的查询将如下所示:

SELECT SUM(sales) FROM State WHERE territoryId = 3;

这可以更好地使用 MySQL 作为关系数据库。当然,您的模型可能还有很多工作要做,但希望这是一个开始。

于 2013-05-11T02:29:12.757 回答
2

由于您<select>允许多项选择,您只需更改名称以允许将一组数据发送到 PHP:

<!-- HTML -->
<select name="formLocation[]" multiple>

然后您可以implode()在 PHP 和IN()MySQL 中使用。 确保您正在清理您的输入或使用参数化查询!这里没有展示!

<?php
$states = implode(',', $_POST['formLocation']);
?>

// your query
SELECT * FROM 'table1' WHERE 'states' IN($states)
于 2013-05-11T02:19:03.717 回答