Php sql pdo选择菜单值$\u POST
我使用了两个填充的selectmenu来查询我的sql数据库。所有选择菜单的第一个选项标签都有value=“”现在,当我选择所有2个选择菜单的选项时,一切正常。但是如果我没有选择一个或多个选项,查询将不起作用 选择菜单中的一个:Php sql pdo选择菜单值$\u POST,php,sql,pdo,Php,Sql,Pdo,我使用了两个填充的selectmenu来查询我的sql数据库。所有选择菜单的第一个选项标签都有value=“”现在,当我选择所有2个选择菜单的选项时,一切正常。但是如果我没有选择一个或多个选项,查询将不起作用 选择菜单中的一个: <select name="titel" id="titel" value=""> <option value="">Selecteer</option> <?php if($rowCount >
<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();
选择器
第2页(search.php):
您可以为此添加检查:
$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();
不幸的是,它不起作用。我想知道value=“”是否是问题所在。也许它没有被解释为空值,但它被解释为引号(字符串)?@xcx我已经更新了我的答案检查它并告诉我你得到了什么结果显示了我数据库中的所有记录,所以执行else{…语句。但这不是我需要的:当我选择一个“titel”(比如说“harry potter”)时我没有选择一个版本,结果一定是所有的哈利波特书籍。不是我的整个图书馆。现在似乎非常接近。当我选择菜单1时,它只起作用。当我选择两个菜单时,它起作用。当我选择菜单2(版本),它不起作用。太棒了,你是个天才!谢谢!