我觉得自己是一个失败者,但我会感谢帮助解决一个我无法弄清楚的基本问题(正确)。 HTML表单的选择字段包含:
<select name="hp">
<option hidden value=""> -- select -- </option>
<option value="0">No</option>
<option value="1">Yes</option>
</select>
空白,0或1然后作为变量$ hp
传递给PHP在SQL查询中,当用户未在表单上选择“否”或“是”时,我无法弄清WHERE子句中为实例生成table.field IN(0,1)的部分。我试过了十个变量IF(例如,table.field IN(IF($ hp ='','0,1',$ hp))和table.field IN(IF($ hp ='','( 0,1)',$ hp)))但没有一个有效。将$ hp定义为0或1的各种迭代都有效但我需要第三个实例,其中应检索0和1记录。
如果我将表单更改为:
,我可以使用它<select name="hp">
<option hidden value="0,1"> -- select -- </option>
<option value="0">No</option>
<option value="1">Yes</option>
</select>
但是当我相信我应该能够通过SQL端的IF获得'0','1'或两者(或任何其他值)时,这感觉就像一个黑客。感谢SQL 101的感觉,我的大脑今天处理不清楚。
答案 0 :(得分:0)
您可以在mysql中使用CASE
(请参阅文档MySQL CASE Syntax)
我在这里创建一个MySQL表测试来测试和一些插入,见下文:
CREATE TABLE test (
id INT,
hp INT
);
INSERT INTO test (id, hp) VALUES (1, 1);
INSERT INTO test (id, hp) VALUES (2, 0);
INSERT INTO test (id, hp) VALUES (3, 0);
INSERT INTO test (id, hp) VALUES (4, 1);
INSERT INTO test (id, hp) VALUES (5, 0);
INSERT INTO test (id, hp) VALUES (6, 1);
INSERT INTO test (id, hp) VALUES (7, 0);
INSERT INTO test (id, hp) VALUES (8, 1);
INSERT INTO test (id, hp) VALUES (9, 1);
INSERT INTO test (id, hp) VALUES (10, 0);
INSERT INTO test (id, hp) VALUES (11, 0);
INSERT INTO test (id, hp) VALUES (12, 1);
根据我的理解,您希望在hp
为0 or 1
时返回某个表的列表,但是当未使用hp
过滤器时,您希望不管{ {1}}字段。这是一种方法,请参阅下面的内容:
hp
您可以在此处试用此代码:MySQLFiddle
我希望这适合你。