博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP和MYSQL中的“逗号”
阅读量:6833 次
发布时间:2019-06-26

本文共 1058 字,大约阅读时间需要 3 分钟。

hot3.png

     在网站开发中会经常用到多选框,比如说兴趣,爱好,工作地点等等内容的选择上。

     如何在开发过程中将这些内容简洁优雅地保存到数据库中,并且高效的进行搜索,方便的进行修改,整个流程需要借助逗号“,”这个符号的帮忙。

    逗号在整个过程中主要作用表现在以下几点:

    ① 将页面提交的多选框数组形式转化为字符串形式(逗号分隔),并保存到数据库中

    ② 搜索过程中如何对保存到数据库中的逗号分隔字符串进行搜索(多项搜索)

    ③ 如何将用户多选的内容从数据库显示到页面

针对①,我们采用PHP中常用的函数来解决:

$submitChkBoxArr = $_POST['chkboxName']; $insertDataStr = implode($submintChkBoxArr,',');  // 数据库保存执行语句...

PHP中explode 和 implode函数可以实现数组和字符串的互换,其中字符串的分隔符可以自己指定。

针对②,由于数据库中保存的数据格式如下图所示

user_id hobby
001 1003,1005,1007,1009
003 1004
005 1008,1009,1010
006 1001,1006,1008,1009

如果要查找选中hobby为1005或者1008的用户的话,SQL语句如何书写是好?请用一条SQL获取结果,(表字段定义可以修改)

最笨的办法是用一堆LIKE和满页面的%,再聪明的办法可能会想到FIND_IN_SET,但是也无法用摆脱用很多OR连接的结果。这时候应该想到的是全文检索,当然首先要对hobby字段建立全文检索索引,然后利用MySQL中自带的函数来实现:

SELECT	*FROM	TESTWHERE	MATCH hobby AGAINST('1005,1008')

当然,逗号分隔符每个被分割的字符串长度必须大于3,否则会被忽略。可见MySQL开发者是很喜欢逗号的。 笑:-D

对于③,实现起来比较简单,从数据库中将逗号分割的字符串取出,用explode函数将字符串转化为数组,然后对于数组在页面中显示时做适当处理,当然最好在页面显示前将选中项判断赋值,然后直接在页面予以显示。

总结:

小强属于LAMP初学者,对于以上实现方法也是在自己遇到问题过程中自己先用蠢办法然后不断网上搜集资料才发现好的解决方案,对于效率问题还真没有计算过;还请大牛指点一二三,欢迎讨论交流!

转载于:https://my.oschina.net/dongqiangV/blog/201549

你可能感兴趣的文章
对对象使用[]的方式使用属性的一个例子的理解
查看>>
MS .NET企业级应用架构设计笔记1(关于业务层)
查看>>
【Codeforces Round #406 (Div. 2)】题解
查看>>
php基本语法
查看>>
页面加载顺序的问题
查看>>
防止人为误操作MySQL数据库技巧一例
查看>>
送给自己的春节回家最佳高薪充电技术
查看>>
用什么样的个人笔记类软件?OneNote、EverNote(印象笔记)、为知笔记、麦库记事、有道云笔记……...
查看>>
运维监控利器Nagios:概念、结构和功能
查看>>
《Python从小白到大牛》第7章 运算符
查看>>
C#中程序的退出
查看>>
MDT 2013 Update 1 Preview 部署 Windows 10之批量部署实战
查看>>
数据建模在性能测试中的理解
查看>>
离开网易的转型之路1:选择测试之路-路上的迷茫
查看>>
RHEL6入门系列之三十一,管理计划任务
查看>>
CentOS 用Strongswan搭建IPSec ***
查看>>
CentOS7 安装向导
查看>>
常见病毒ACL
查看>>
Visual Studio 2015 速递(4)——高级特性之移动开发
查看>>
第三章 Shell表达式与运算符
查看>>