doureng5668 2014-09-24 11:46
浏览 23
已采纳

如果/ elseif / else,PHP使用条件创建MySQL查询

I'm new to PHP & MySQL and was trying to use php to create query for MySQL below is the current state of the code and it's still WIP but the if/elseif structure already gives the desired output which varies according to data input, which for example could be as follows

"SELECT * FROM tuntikortti WHERE PVM BETWEEN '2014-09-11' AND '2014-09-27' AND Henkilo =
 'Van' AND Tyonumero = '123456' AND Toiminto = '123';"

I've confirmed that the query line itself works in MySQL but I would need to somehow get it inside the MySQL_query($con, The query here).

So how do I get the php output of whole if/elseif query line build in variable or similar to be used?

<?php
include("db_connect.php");

$pvm1       = $_POST['pvm1'];
$pvm2       = $_POST['pvm2'];
$henkilo    = $_POST['henkilo'];
$tyonumero  = $_POST['tyonumero'];
$toiminto   = $_POST['toiminto'];

/* MySQL query line build, beginning */
ECHO "SELECT * FROM tuntikortti WHERE ";

    /* PVM */
    if(!empty($pvm1) && !empty($pvm2)){
        echo "PVM BETWEEN '". $pvm1 ."' AND '". $pvm2 ."'";
    } elseif(!empty($pvm1)) {
        echo "PVM = '". $pvm1 ."'";
    };

    /* Henkilo */
    if(!empty($henkilo) && !empty($pvm1)){
        echo " AND Henkilo = '". $henkilo ."'";
    } elseif(!empty($henkilo)) {
        echo " Henkilo = '". $henkilo ."'";
    };

    /* Tyonumero */
    if(!empty($tyonumero) && (!empty($pvm1) || !empty($henkilo))){
            echo " AND Tyonumero = '". $tyonumero ."'";
        } elseif(!empty($tyonumero)) {
            echo " Tyonumero = '". $tyonumero ."'";
        };

    /* Toiminto */
    if(!empty($toiminto) && (!empty($tyonumero) || !empty($pvm1) || !empty($henkilo))){
        echo "  AND Toiminto = '". $toiminto ."'";
    } elseif(!empty($toiminto)) {
            echo " Toiminto = '". $toiminto ."'";
        };

    echo ";";

    $query = mysqli_query($sql,$con);

echo "<table border='1'>
<tr>
<th>TID</th>
<th>PVM</th>
<th>Henkilo</th>
<th>Työnumero</th>
<th>Toiminto</th>
<th>Tunnit</th>
<th>Selite</th>
</tr>";

while($row = mysqli_fetch_array($query)) {
  echo "<tr>";
  echo "<td>" . $row['TID'] . "</td>";
  echo "<td>" . $row['PVM'] . "</td>";
  echo "<td>" . $row['Henkilo'] . "</td>";
  echo "<td>" . $row['Tyonumero'] . "</td>";
  echo "<td>" . $row['Toiminto'] . "</td>";
  echo "<td>" . $row['Tunnit'] . "</td>";
  echo "<td class='selitetyyli'>" . $row['Selite'] . "</td>";
  echo "</tr>";
}

echo "</table>";

include("db_close_connection.php");
    ?>
  • 写回答

1条回答 默认 最新

  • duanqiang2617 2014-09-24 12:07
    关注

    Check this example and try to modify your code,

    $sql = '';
    $sql = "SELECT * FROM tablename WHERE ";
    if(condition){
        $sql.= "fieldname = 'value'";
    } elseif(condition) {
        $sql.= "fieldname = 'value'";
    };
    
    $sql.= ";";
    $query = mysqli_query($con,$sql);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置