查看: 1046|回复: 62
|
php LIKE 和 EQUAL 不能共用?
[复制链接]
|
|
本帖最后由 悍马 于 2-8-2019 06:30 PM 编辑
各位好,我没有程序基础, 目前用MS管理数据好多年了(也是自己建立的), 计划建立线上简单数据库供自己团队用。我已经把MS数据上载到Mysql,我的数据有包括图片, 但是不知用什么方式或Form呈现数据出来。我看到网上有推荐Form Tools, 我试用了可是无法importMS数据(csv), 可能我不会import 。或许我可以在phpmyadmin整合旧的MS数据(csv), 但是各位有什么更好建议吗或其他相关软件介绍吗?
|
|
|
|
|
|
|
|
发表于 18-7-2019 02:02 PM
|
显示全部楼层
可以把图片转换成base64然后丢到数据库(强力不建议,会使得数据库肥大)。
长远来看,应该写个后台来查看和管理。 |
|
|
|
|
|
|
|
楼主 |
发表于 19-7-2019 11:18 AM
|
显示全部楼层
已經成功整合MS数据到Form Tools, 但是功能真的有限, 还是要改制。你说的对,长远来看,应该写个后台来查看和管理。但是我不是programmer,想找个WYSIWYG来弄。 |
|
|
|
|
|
|
|
楼主 |
发表于 19-7-2019 11:20 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 19-7-2019 11:57 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 24-7-2019 05:59 PM
|
显示全部楼层
用PHP来写后台不会很难的,用框架如:Laravel
|
|
|
|
|
|
|
|
发表于 24-7-2019 06:04 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 25-7-2019 09:48 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 26-7-2019 01:13 PM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 2-8-2019 06:44 PM
|
显示全部楼层
我需要寻找和显示符合几个条件的资料,以下是我的代码
$query = "SELECT * FROM `tbl_name` WHERE contact_person = '$contact_person' OR status = '$status' OR area = '$area' OR address LIKE '%".$address."%'";
可是只能正常显示 LIKE 出来的质料, =无法操作
如果我把 LIKE 换去= 或者把 address LIKE '%".$address."% 除掉, 那么前面的 =就能够操作
1) 是不是LIKE 和 =不能共存 ?
2) 还有,请问以下代码有什么分别?
address LIKE '%$address%' vs address LIKE '%".$address."%'
|
|
|
|
|
|
|
|
楼主 |
发表于 13-8-2019 09:39 PM
|
显示全部楼层
请问这个Lavarel是不是可以简化写程序?我花了很多时间去学php,可是还无法上手,不能再花时间搞下去了,要用到了。
|
|
|
|
|
|
|
|
楼主 |
发表于 14-8-2019 12:03 AM
|
显示全部楼层
Codeigniter 比 Lavarel容易处理吗 |
|
|
|
|
|
|
|
发表于 14-8-2019 10:51 AM
|
显示全部楼层
本帖最后由 slaythia 于 14-8-2019 02:44 PM 编辑
Laravel 和 CI 都是属于php framework,各有各的好处。
这两款Framework的架构都是MVC(Model, View, Controller)。
你上面的SQL语句是要实现怎样的效果?
在tbl_name表查找contact_person, status, area, 包含address吗?
$query = "SELECT * FROM `tbl_name` WHERE address LIKE '%$address%' AND contact_person='$contact_person' OR status='$status' OR area='$area' ";
%是MySQL的通配符,
%$address : 以$address为结尾
$address% : 以$address为开头
%$address%: 包含$address
你说的:address LIKE '%$address%' vs address LIKE '%".$address."%'
这个是PHP拼接字段(variable)的写法。
$address = "11 JALAN IPOH 1";
$query = "SELECT * FROM `table_name` WHERE address LIKE '%".$address."%' ";$query2 = "SELECT * FROM `table_name` WHERE address LIKE '%$address%' ";
echo $query;//结果:"SELECT * FROM `table_name` WHERE address LIKE '%11 JALAN IPOH 1%' "
echo $query2;//结果:"SELECT * FROM `table_name` WHERE address LIKE '%11 JALAN IPOH 1%' "
$query和$query2 的结果都是一样的。
|
|
|
|
|
|
|
|
发表于 14-8-2019 03:09 PM
|
显示全部楼层
本帖最后由 slaythia 于 14-8-2019 03:18 PM 编辑
<?php
//表单POST数据
$input = $_POST;
//表名
$table_name = 'tbl_name';
//表字段
$column = '*';
//查询语句
$query = "SELECT $column FROM `$table_name` WHERE address LIKE '%{$input['address']}%'
";
// 如果$input['contact_person']非空,$query串接查询语句。
if (!empty($input['contact_person']))
{
$query .= " AND contact_person='{$input['contact_person']}'";
}
// 如果$input['status']非空,$query串接查询语句。
if (!empty($input['status']))
{
$query .= " AND status='{$input['status']}'";
}
// 如果$input['area']非空,$query串接查询语句。
if (!empty($input['area']))
{
$query .= " AND area='{$input['area']}'";
}
假设提交的数据为:
$_POST['address'] = "JALAN IPOH";
$_POST['contact_person'] = "Najib";
$_POST['status'] = "";
$_POST['area'] = "KL";
那么查询语句最终将是:
SELECT * FROM `tbl_name` WHERE address LIKE '%JALAN IPOH%' AND contact_person='Najib' AND area='KL'
由于status为空所以就不会添加到查询语句中,同理其他的字段也是(address也是,因为加了通配符就算是为空也是会查得出数据)。
|
|
|
|
|
|
|
|
楼主 |
发表于 15-8-2019 07:50 AM
|
显示全部楼层
你好,其实我只需要简单的search而已,比如我有三个criteria供user query。如果三个criteria都有input,return符合这三个条件的result。如果只有2个criteria有input,那就return符合2个条件的result,如果只有1个就return 符合1个。这么简单可是我就办不到
以下是我的码
if (isset($_POST['submit'])){
$status = $_POST['status'];
$area = $_POST['area'];
$address = $_POST['address'];
if($status != "" OR $area != "" OR $address != ""{
$query = "SELECT * FROM `tbl_name` WHERE address LIKE '%".$address."%'
AND status LIKE '%".$status."%' AND area = '$area' ";
} |
|
|
|
|
|
|
|
楼主 |
发表于 15-8-2019 07:51 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 15-8-2019 07:53 AM
|
显示全部楼层
其实我可以给programmer弄,可是我希望可以掌握自己的programme,方便以后要customise,再加上有些兴趣,因此才自己糟蹋自己 |
|
|
|
|
|
|
|
楼主 |
发表于 15-8-2019 09:34 AM
|
显示全部楼层
if (isset($_POST['submit'])){
$status = $_POST['status'];
$area = $_POST['area'];
$address = $_POST['address'];
那么以上这段要写在你的码哪个位置?
|
|
|
|
|
|
|
|
楼主 |
发表于 15-8-2019 09:37 AM
|
显示全部楼层
MAMP非常有问题,每次重开启都无法和联结,必须删除mysql-bin.index才可以用 |
|
|
|
|
|
|
|
楼主 |
发表于 15-8-2019 09:51 AM
|
显示全部楼层
本帖最后由 悍马 于 15-8-2019 02:22 PM 编辑
我整理后这样尝试,结果:
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
以下是我的代码
if (isset($_POST['submit'])){
$status = $_POST['status'];
$area = $_POST['area'];
$address = $_POST['address'];
$input = $_POST;
//表名
$table_name = 'tbl_name';
//表字段
$column = '*';
//查询语句
$query = "SELECT $column FROM `$table_name` WHERE address LIKE '%{$input['address']}%' ";
// 如果$input['contact_person']非空,$query串接查询语句。
if (!empty($input['contact_person'])){$query .= " AND contact_person='{$input['contact_person']}'";
}
// 如果$input['status']非空,$query串接查询语句。
if (!empty($input['status']))
{$query .= " AND status='{$input['status']}'";}
// 如果$input['area']非空,$query串接查询语句。
if (!empty($input['area']))
{
$query .= " AND area='{$input['area']}'";
} |
|
|
|
|
|
|
| |
本周最热论坛帖子
|