【问题标题】:Multiple MySQL query in php. I'm trying to figure out how to use radio buttons to search for multiple queries in a databasephp 中的多个 MySQL 查询。我试图弄清楚如何使用单选按钮在数据库中搜索多个查询
【发布时间】:2016-04-04 21:12:58
【问题描述】:

php 中的多个 MySQL 查询。我试图弄清楚如何使用单选按钮在数据库中搜索多个查询。我可以搜索 ID,但我不能使用单选按钮搜索公司、名字、姓氏。这就是我得到的。

//search from search box
if(isset($_POST['search'])){
    $searchQ = $_POST['search'];
    $searchQ = preg_replace("#[^0-9a-z]#i","",$searchQ); //??
//Search by ID
// mysqli_query need 2 parameters $Db and query
    $queryID = mysqli_query($DB, "Select id, company,first_name, last_name from customers WHERE id like '$searchQ'") or die ("could not search by ID");
    $countID = mysqli_num_rows($queryID);

    //Search by company
    $queryCompany = mysqli_query($DB, "Select id, company,first_name, last_name from customers WHERE company like '%$searchQ%'") or die ("could not search by company ");
    $countCompany = mysqli_num_rows($queryCompany);

    //Search by first name
    $queryFname = mysqli_query($DB, "Select id, company,first_name, last_name from customers WHERE first_name like '%$searchQ%'") or die ("could not search by First name ");
    $countFname = mysqli_num_rows($queryFname);

    //search by last name
    $queryLname = mysqli_query($DB, "Select id, company,first_name, last_name from customers WHERE last_name like '%$searchQ%'") or die ("could not search by Last name ");
    $countLname = mysqli_num_rows($queryLname);

    //search all
   $queryAll = mysqli_query($DB, "Select id, company,first_name, last_name from customers") or die ("could not search by All ");
    $countAll = mysqli_num_rows($queryAll);

    if ($countID == 0) {
        $output = 'There was no search!';
     }


    else {
        while($row = mysqli_fetch_assoc($queryID)){
            $id = $row['id'];
            $com = $row['company'];
            $fname = $row['first_name'];
            $lname = $row['last_name'];

            $output ='<div> '.$id.' '.$com.' '.$fname.' '.$lname.'</div>';
        }
    }
}


?>

<h1>Customer List</h1><br /><br /><br />

<h3>Search from criteria</h3>
<form action="search.php" method="post">
    <input type="text" name="search" placeholder="search database" /><br />
    <input type="radio" name="SearchCategory" value="Id" />Id<br />
    <input type="radio" name="SearchCategory" value="company" />Company<br />
    <input type="radio" name="SearchCategory" value="firstName" />First Name<br />
    <input type="radio" name="SearchCategory" value="lastName" />Last Name<br />
    <input type="submit" value="search" />
</form><br /><br />

<p></p>

<?php  print($output); 

【问题讨论】:

  • 你没有SearchCategory POST 数组。

标签: php mysql sql mysqli pdo


【解决方案1】:

这不是我的做法,但尽量与您给定的代码保持最接近,可能的解决方案如下所示:

<?php
if (isset($_POST['search'])){
    $searchQ = preg_replace("#[^0-9a-z]#i", "", $_POST['search']);

    switch (strtolower($_POST['SearchCategory'])) {
        case 'id':
            $query = mysqli_query($DB, "Select id, company,first_name, last_name from customers WHERE id like '$searchQ'") or die ("could not search by ID");
            break;
        case 'company':
            $query = mysqli_query($DB, "Select id, company,first_name, last_name from customers WHERE company like '%$searchQ%'") or die ("could not search by company ");
            break;
        case 'firstname':
            $query = mysqli_query($DB, "Select id, company,first_name, last_name from customers WHERE first_name like '%$searchQ%'") or die ("could not search by First name ");
            break;
        case 'lastname':
            $query = mysqli_query($DB, "Select id, company,first_name, last_name from customers WHERE last_name like '%$searchQ%'") or die ("could not search by Last name ");
            break;
        case 'all':
        default:
            $query = mysqli_query($DB, "Select id, company,first_name, last_name from customers") or die ("could not search by All ");
    }

    $count = mysqli_num_rows($query);

    if ($count == 0) {
        $output = 'There was no search!';
    }
    else {
        while ($row = mysqli_fetch_assoc($query)) {
            $id = $row['id'];
            $com = $row['company'];
            $fname = $row['first_name'];
            $lname = $row['last_name'];

            $output ='<div> '.$id.' '.$com.' '.$fname.' '.$lname.'</div>';
        }
    }
}

?>

<h1>Customer List</h1><br><br><br>

<h3>Search from criteria</h3>
<form action="search.php" method="post">
    <input type="text" name="search" placeholder="search database" /><br>
    <input type="radio" name="SearchCategory" value="Id" /> Id<br>
    <input type="radio" name="SearchCategory" value="company" /> Company<br>
    <input type="radio" name="SearchCategory" value="firstName" /> First Name<br>
    <input type="radio" name="SearchCategory" value="lastName" /> Last Name<br>
    <input type="radio" name="SearchCategory" value="all" /> All<br>
    <input type="submit" value="search" />
</form><br><br>


<?php  print($output);

你可以在几个地方稍微简化一下,但这应该可行。

【讨论】:

  • 感谢您的帮助。但是你会推荐哪一个,mysqli 还是 PDO?
  • 在这一点上,我可能会推荐 PDO,但这可能只是因为那是我在 mysql* 之后去的,当我这样做时它支持命名参数而 mysqli 没有(我不知道现在有没有)。 PDO 还支持很多数据库,这很好。
  • 您是否遇到任何错误?或者什么都没有?您是否启用了错误报告或检查了日志?还是查询不起作用?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多