【问题标题】:SQL Statement from database来自数据库的 SQL 语句
【发布时间】:2015-03-17 16:36:23
【问题描述】:

我不是 SQL 的“专业人士”。

我有以下场景:

表格:最喜欢的颜色

 User   |Red    |Blue   |Yellow |Green  |Black
 Klaus  |0      |1      |1      |0      |0
 Jessy  |1      |0      |1      |0      |1 
 Andy   |1      |1      |0      |0      |0 
 Alex   |0      |0      |0      |1      |1 
 Denis  |1      |1      |0      |0      |1

HTML 代码

 <form method="post" action="./usercolor.php"> <input type="checkbox" id="colorred" name="colorred" value="1" />red</td>
 <input type="checkbox" id="colorblue" name="colorblue" value="1" />blue</td>
 <input type="checkbox" id="coloryellow" name="coloryellow" value="1" />yellow</td>
 <input type="checkbox" id="colorgreen" name="colorgreen" value="1" />green</td>
 <input type="checkbox" id="colorblack" name="colorblack" value="1" />black</td>
 <input type="submit" value="SEARCH" /> </form>

PHP/SQL(使用 MySQL 5.6):

    $colorred       =   $_POST["colorred"];
    $colorblue      =   $_POST["colorblue"];
    $colorgreen     =   $_POST["colorgreen"];
    $coloryellow    =   $_POST["coloryellow"];
    $colorblack     =   $_POST["colorblack"];

SELECT * FROM favcolor WHERE red = '".$colorred."' AND blue = '".$colorblue."' AND green = '".$colorgreen."' AND yellow = '".$coloryellow."' AND black = '".$colorblack."'

现在我的问题: 例如,我想知道哪个用户喜欢黄色。然后我检查 id "coloryellow" 上的复选框,然后按 "SEARCH"。 但我没有收到任何结果,因为 SQL 语句中的“AND”运算符是错误的...... 我必须使用哪个操作符才能让我的 SQL 语句给我这两个结果?

【问题讨论】:

  • 考虑规范您的设计
  • 您需要根据选中的复选框创建 WHERE 子句。 (看看@cyadvert 的回答)

标签: php mysql sql operator-keyword


【解决方案1】:
$whereArr = Array();
if (isset($_POST["colorred"]) && $_POST["colorred"]==1) $whereArr[] = "red=1";
if (isset($_POST["colorblue"]) && $_POST["colorblue"]==1) $whereArr[] = "blue=1";
if (isset($_POST["colorgreen"]) && $_POST["colorgreen"]==1) $whereArr[] = "green=1";
if (isset($_POST["coloryellow"]) && $_POST["coloryellow"]==1) $whereArr[] = "yellow=1";
if (isset($_POST["colorblack"]) && $_POST["colorblack"]==1) $whereArr[] = "black=1";

$sqlStr = "SELECT * FROM favcolor WHERE " . implode(" AND ", $whereArr);

然后你运行查询

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多