Py学习  »  DATABASE

mysql查询中如何避免like语句为空

Riyaz Ashik • 6 年前 • 1677 次点击  

在下面的代码中,我一直在查询数据库中的姓名和电子邮件, 在这种情况下,如果name或email为空,它将获取所有数据。

如何避免这种情况?请帮忙

MySQL查询:

$searchdata = mysqli_query($this->dbh, "SELECT insertdata.name, insertdata.email, state.StateName, district.DistrictName
  FROM insertdata
  INNER JOIN state ON insertdata.state = state.StCode
  INNER JOIN district ON insertdata.district = district.DistCode
  WHERE name LIKE '%$namesearch%' OR email LIKE '%$emailsearch%'");

我的密码,

<?php
include_once("function.php");
$searchdata=new DB_con();
if(isset($_POST['submit']))
{
    $namesearch=$_POST['namesearch'];
    $emailsearch=$_POST['emailsearch'];
}
$search=$searchdata->searchdata($namesearch,$emailsearch);
foreach($search as $search)
{
    ?>
    <tr>
    <td><?php echo ($search['name']);?></td>
    <td><?php echo ($search['email']);?></td>
    <td><?php echo ($search['StateName']);?></td>
    <td><?php echo ($search['DistrictName']);?></td>
    </tr>
<?php 
}
?>
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40071
文章 [ 2 ]  |  最新文章 6 年前
Twista
Reply   •   1 楼
Twista    7 年前

对于不同的情况,比如

if($namesearch == '' && $emailsearch !=''){
        $searchdata =  mysqli_query($this->dbh, "SELECT insertdata.name, insertdata.email, state.StateName, district.DistrictName
                        FROM insertdata  INNER JOIN state ON insertdata.state = state.StCode  INNER JOIN district ON insertdata.district
                        = district.DistCode WHERE  email LIKE '%$emailsearch%'");
    }
else if($namesearch != '' && $emailsearch ==''){
$searchdata =  mysqli_query($this->dbh, "SELECT insertdata.name, insertdata.email, state.StateName, district.DistrictName
                        FROM insertdata  INNER JOIN state ON insertdata.state = state.StCode  INNER JOIN district ON insertdata.district
                        = district.DistCode WHERE name LIKE '%$namesearch%'");
}
else if{
  //bla bla bla
}
Julian Stark MyTwoCents
Reply   •   2 楼
Julian Stark MyTwoCents    7 年前

只需添加这个if条件来检查它是否是空的

// check here
if ($namesearch == '' || $emailsearch =='')
{
    echo 'Please enter name or email to search.';
} else {
    $search = $searchdata->searchdata($namesearch,$emailsearch);
    foreach($search as $search)
    {
    ?>
        <tr>
            <td><?php echo ($search['name']); ?></td>
            <td><?php echo ($search['email']); ?></td>
            <td><?php echo ($search['StateName']); ?></td>
            <td><?php echo ($search['DistrictName']); ?></td>
        </tr>
    <?php   
    }
}