doudanma9706 2017-04-23 16:50 采纳率: 100%
浏览 73
已采纳

sql pdo选择菜单值$ _POST

I made 2 populated selectmenu's to make queries to my sql database. The first option-tags of all select menu's have value="" Now everything works fine when I do select options of all 2 selectmenu's. But If I don't choose 1 or more options, the query doesn't work.

One of the select menu's:

<select name="titel" id="titel" value="">
    <option value="">Selecteer</option>
    <?php
    if($rowCount > 0){
        while($row = $query->fetch_assoc()){ 
            echo '<option  value="'.$row['titel'].'">'.$row['titel'].'</option>';
        }
    }else{
        echo '<option value="">Language not available</option>';
    }
    ?>
 </select>

2nd page (search.php):

<?php 
//load database connection
$host = "localhost";
$user = "...";
$password = "...";
$database_name = "...";
$pdo = new PDO("mysql:host=$host;dbname=$database_name", $user,  $password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
));
// Search from MySQL database table

$titel=$_POST['titel'];
$version=$_POST['version'];

$query = $pdo->prepare("SELECT DISTINCT * FROM Library  where titel = ?  AND version = ?");

$query->bindValue(1, $titel, PDO::PARAM_STR);
$query->bindValue(2, $version, PDO::PARAM_STR);
$query->execute();
  • 写回答

1条回答 默认 最新

  • du970294 2017-04-23 17:04
    关注

    You can add check for that :

    $sql = "SELECT DISTINCT * FROM Library";
    
    if( (isset($_POST['titel']) && $_POST['titel'] != '') ) {    
      $sql .= " where titel =:titel";
    
      if ( (isset($_POST['version']) && $_POST['version'] != '') ) {    
        $sql .= " AND version =:version"; 
      }    
    } 
    
    if ( (isset($_POST['version']) && $_POST['version'] != '') && ! (isset($_POST['titel']) && $_POST['titel'] != '') ) {    
      $sql .= " where version =:version"; 
    }
    
    $query = $pdo->prepare($sql);    
    
    if( (isset($_POST['titel']) && $_POST['titel'] != '') ) {
       $query->bindParam(':titel', $_POST['titel']);
    }
    
    if( (isset($_POST['version']) && $_POST['version'] != '') ) {
       $query->bindParam(':version', $_POST['version']);
    }
    
    $query->execute();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 如何将下列的“无限压缩存储器”设计出来
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口