佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: 悍马

php LIKE 和 EQUAL 不能共用?

[复制链接]
 楼主| 发表于 15-8-2019 09:54 AM | 显示全部楼层
欠你一杯咖啡,我在槟城,有缘見面我请你吃饭。
回复

使用道具 举报


ADVERTISEMENT

发表于 15-8-2019 10:43 AM | 显示全部楼层
悍马 发表于 15-8-2019 09:51 AM
我整理后这样尝试,结果:

1) 如果单单query status, return "Records Not Found"      
2) 如果单单query area,正常操作
3) 如果单单query address, return "Records Not Found"      
4) 如果单单que ...

可以看下你的input(提交的查询数据)是什么吗?
回复

使用道具 举报

发表于 15-8-2019 10:45 AM | 显示全部楼层
悍马 发表于 15-8-2019 09:54 AM
欠你一杯咖啡,我在槟城,有缘見面我请你吃饭。

我目前在菲律宾工作,本身是柔佛新山人。真的要有缘才能见面吃饭了~~呵呵




回复

使用道具 举报

发表于 15-8-2019 10:47 AM | 显示全部楼层
悍马 发表于 15-8-2019 07:53 AM
其实我可以给programmer弄,可是我希望可以掌握自己的programme,方便以后要customise,再加上有些兴趣,因此才自己糟蹋自己

有兴趣的东西,不算是糟蹋吧~~顶多是折腾
回复

使用道具 举报

发表于 15-8-2019 10:53 AM | 显示全部楼层
悍马 发表于 15-8-2019 09:37 AM
MAMP非常有问题,每次重开启都无法和联结,必须删除mysql-bin.index才可以用

开发环境是Windows我用Laragon.https://laragon.org/

开发环境是MacOS我用Valet.
https://learnku.com/docs/laravel/5.5/valet/1286

MAMP MacOS我之前用过,感觉不好用。。。我记得也是数据库的问题。。然后删掉了。。
回复

使用道具 举报

 楼主| 发表于 15-8-2019 02:13 PM | 显示全部楼层
slaythia 发表于 15-8-2019 10:43 AM
可以看下你的input(提交的查询数据)是什么吗?

如何看到?我是直接在localhost/index.php提交
回复

使用道具 举报

Follow Us
 楼主| 发表于 15-8-2019 02:17 PM | 显示全部楼层
你的代码.....

$query = "SELECT $column FROM `$table_name` WHERE address LIKE '{$input['address']}%'";

.....是必须 where address like $address 才query 其他吗吗?
回复

使用道具 举报

发表于 15-8-2019 03:10 PM | 显示全部楼层
悍马 发表于 15-8-2019 02:13 PM
如何看到?我是直接在localhost/index.php提交

就是你填入的数据

例如:
address: 11 JALAN IPOH 1
status: PENDING
area: KL
contact person: NAJIB
回复

使用道具 举报


ADVERTISEMENT

发表于 15-8-2019 03:12 PM | 显示全部楼层
悍马 发表于 15-8-2019 02:17 PM
你的代码.....

$query = "SELECT $column FROM `$table_name` WHERE address LIKE '{$input['address']}%'";

.....是必须 where address like $address 才query 其他吗吗?

是啊,要在 $address 前后加通配符,像这样 %$address%
回复

使用道具 举报

发表于 15-8-2019 03:39 PM | 显示全部楼层
<?php

//表单POST数据
$input = $_POST;

//表名
$table_name = 'tbl_name';

//表字段
$column = '*';

//查询语句
$query = "SELECT $column FROM `$table_name`";

$where = null;

if (!empty($input['address']))
{
        $where = "WHERE";
        $query .= " $where address LIKE '%".$input['address']."%'";
}

// 如果$input['contact_person']非空,$query串接查询语句。
if (!empty($input['contact_person']))
{
        if (is_null($where))
        {
                $where = "WHERE";
        }
        else {
                $where = "AND";
        }
    $query .= " $where contact_person='{$input['contact_person']}'";
}

// 如果$input['status']非空,$query串接查询语句。
if (!empty($input['status']))
{
        if (is_null($where))
        {
                $where = "WHERE";
        }
        else {
                $where = "AND";
        }
    $query .= " $where status='{$input['status']}'";
}

// 如果$input['area']非空,$query串接查询语句。
if (!empty($input['area']))
{
        if (is_null($where))
        {
                $where = "WHERE";
        }
        else {
                $where = "AND";
        }
    $query .= " $where area='{$input['area']}'";
}

回复

使用道具 举报

发表于 15-8-2019 03:40 PM | 显示全部楼层
修改版已经出炉,依照参数生成query。
回复

使用道具 举报

 楼主| 发表于 15-8-2019 05:07 PM | 显示全部楼层
悍马 发表于 15-8-2019 02:17 PM
你的代码.....

$query = "SELECT $column FROM `$table_name` WHERE address LIKE '{$input['address']}%'";

.....是必须 where address like $address 才query 其他吗吗?

我的意思是说如果WHERE address LIKE '{$input['address']}%'放在第一行,如果user没有input $address呢?那么会因此没有query其他 criteria, return record not found 吗 ?
回复

使用道具 举报

 楼主| 发表于 15-8-2019 05:12 PM | 显示全部楼层
slaythia 发表于 15-8-2019 03:10 PM
就是你填入的数据

例如:
address: 11 JALAN IPOH 1
status: PENDING
area: KL
contact person: NAJIB

input by user
$status = "Sale"
$area = "GT"
$address like "Osman"

註 : 整个address 是 No 123, Jalan Osman, 11200, Penang。其他还有Jalan Osman 1, Jalan Osman 2, Solok Osman, Lintang Osman。 只要有Osman这个子就可以出来
回复

使用道具 举报

 楼主| 发表于 15-8-2019 05:23 PM | 显示全部楼层
slaythia 发表于 15-8-2019 03:40 PM
修改版已经出炉,依照参数生成query。

也是一样

1) 如果单单query status, return "Records Not Found"      
2) 如果单单query area,正常操作
3) 如果单单query address, return "Records Not Found"      
4) 如果单单query status 和 area, 正常操作
5) 如果单单query status 和 address, return "Records Not Found"  
6) 如果单单query area 和 address, 正常操作
7) 如果三个一起query, 正常操作

问题处在status 和 address
回复

使用道具 举报

 楼主| 发表于 15-8-2019 05:25 PM | 显示全部楼层
本帖最后由 悍马 于 15-8-2019 05:34 PM 编辑

整个代码是这样的,或许我有其他错误.................



<!doctype html>
<!DOCTYPE html>
<html>
<head>
        <title>Filters in PHP</title>
        <style>
                        table,tr,th,td
                        {
                                border: 1px solid black;
                        }
                </style>
</head>

<body>
        <div>
                <h3>How to filter records using php</h3>
        </div>
        
        <div>
        <h3>PHP Filters</h3>
                <div>
                        <form action="index2.php" method="POST">
                                
                                <div class="form-group">
                                        <label>Owner</label>
                                                <div>
           <input type="text" name="contact_person" placeholder="Owner">
                                                </div>
                                
                                
                                </div>
                                <p>
                                
                                <div class="form-group">
                                        <label>Status</label>
                                                <div>
                                <input type="radio" name="status" value="SALE">Sale
                                <input type="radio" name="status" value="LET">Let
                                                </div>
                                
                                
                                </div>
                                <p>
                                
                                <div class="form-group">
                                        <label>Area</label>
                                                <div>
                                     <select name="area" id="area">
                                          <option>Area</option>
                                          <option value="GT">Georgetown</option>
                                          <option value="PT">Pulau Tikus</option>
                                          <option value="AI">Air Itam</option>
                                          <option value="TT">Tanjung Tokong</option>
                                          <option value="BL">Bayan Lepas</option>               
                                          <option value="FL">Farlim</option>        
                                     </select>
                                                </div>
                                
                                
                                </div>
                                <p>
                                
                                <div class="form-group">
                                        <label>Address</label>
                                                <div>
     <input type="text" name="address" placeholder="Address contains">
                                                </div>                           
                                </div>
                                
                                <p>
                                
                                <div class="form-group">
                                        <label></label>
                                                <div>
                                                        <input type="submit" name="submit">
                                                </div>
                                </div>
                </form>
        </div>
        
        </div>        
        <div>
                <table>
                        
                                <tr>
                                        <th>Owner</th>
                                        <th>Status</th>
                                        <th>Area</th>
                                        <th>House No</th>
                                        <th>Address</th>
                                        <th>selling</th>
                                        <th>rental</th>
                                        <th>Property description</th>
                                </tr>
                <tbody>
                        <?php
                        include("db.php");
                        if (isset($_POST['submit'])){
                        
                                $status = $_POST['status'];
                                $area = $_POST['area'];
                                $address = $_POST['address'];
                                
//表单POST数据
$input = $_POST;

//表名
$table_name = 'tbl_name';

//表字段
$column = '*';

//查询语句
$query = "SELECT $column FROM `$table_name`";

$where = null;

if (!empty($input['address']))
{
        $where = "WHERE";
        $query .= " $where address LIKE '%".$input['address']."%'";
}


// 如果$input['status']非空,$query串接查询语句。
if (!empty($input['status']))
{
        if (is_null($where))
        {
                $where = "WHERE";
        }
        else {
                $where = "AND";
        }
    $query .= " $where status='{$input['status']}'";
}

// 如果$input['area']非空,$query串接查询语句。
if (!empty($input['area']))
{
        if (is_null($where))
        {
                $where = "WHERE";
        }
        else {
                $where = "AND";
        }
    $query .= " $where area='{$input['area']}'";
}
                  $data = mysqli_query($conn, $query) or die('error');
                  if(mysqli_num_rows($data) > 0){
                          while($row = mysqli_fetch_assoc($data)){
                           $contact_person = $row['contact_person'];
                           $status = $row['status'];
                           $area = $row['area'];
                           $address = $row['address'];
                  ?>
                                       <tr>
                                             <td><?php echo $row['contact_person'];?></td>
                                             <td><?php echo $row['status'];?></td>
                                             <td><?php echo $row['area'];?></td>
                                             <td><?php echo $row['house_no'];?></td>
                                             <td><?php echo $row['address'];?></td>
                                             <td><?php echo $row['selling'];?></td>
                                             <td><?php echo $row['rental'];?></td>
                                             <td><?php echo $row['property_description'];?></td>
                                      </tr>        
                                                
                                                <?php        
                                                }
                                }
                                else{
                                        ?>
                                        <tr>
                                                <td>Records Not Found!</td>
                                        </tr>        
                                        <?php
                                }
                        
                        }
                        
                        ?>
                </tbody>
                </table>
        </div>
        </div>
</body>
</html>
回复

使用道具 举报

发表于 15-8-2019 05:33 PM | 显示全部楼层
悍马 发表于 15-8-2019 05:12 PM
input by user
$status = "Sale"
$area = "GT"
$address like "Osman"

註 : 整个address 是 No 123, Jalan Osman, 11200, Penang。其他还有Jalan Osman 1, Jalan Osman 2, Solok Osman, Lintang Osman。 只 ...

WeChat Screenshot_20190815172606.png 假设数据表里的数据是这5条。

WeChat Screenshot_20190815172737.png


WeChat Screenshot_20190815173147.png

可以看到查询效果,用#30的代码来实现。
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 15-8-2019 05:37 PM | 显示全部楼层
如果单单query address like "Osman"不能
回复

使用道具 举报

 楼主| 发表于 15-8-2019 05:40 PM | 显示全部楼层
三个都一起query可以正常操作,但是单单address或单单status不能
回复

使用道具 举报

 楼主| 发表于 15-8-2019 05:41 PM | 显示全部楼层
欠你2杯咖啡了
回复

使用道具 举报

发表于 15-8-2019 06:09 PM | 显示全部楼层
本帖最后由 slaythia 于 15-8-2019 06:10 PM 编辑

<select name="area" id="area">
    <option value="">Area</option>
    <option value="GT">Georgetown</option>
    <option value="PT">Pulau Tikus</option>
    <option value="AI">Air Itam</option>
    <option value="TT">Tanjung Tokong</option>
    <option value="BL">Bayan Lepas</option>               
    <option value="FL">Farlim</option>        
</select>

area dafault option value 要指定为空。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 19-4-2024 02:24 AM , Processed in 0.052082 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表