search
HomeDatabaseMysql Tutorialmysql使用参数化查询,like模糊查询,应如何拼接字符串_MySQL

bitsCN.com

mysql使用参数化查询,like模糊查询,应如何拼接字符串

 

好奇是学习的源动力:因为在群里潜水看到关注sql注入的讨论,尝试在自己程序的搜索框输入单引号,程序报错,开始尝试修改为参数化查询,噩梦开始了。。

 

搬出了毕业时写的DBHelper(很早写的使用参数化查询的操作类),替换掉程序中为了方便精简(姑且这么说吧)的DBHelper。

 

开始安装平常的逻辑拼接:sql += " where t.realName like '%?realName%'";//失败了,无论如何都查不出来数据。

 

失败原因:据说是因为'' 引号包裹了?realName,程序认为这是个字符串,不是关键字,不进行解析了。

 

此后我又试了类似这样的格式,各种拼接方式,

 

如:sql += " where t.realName like '%"+"?realName"+"%'";//想要将?realName作为参数,来让程序识别,基础不牢的弊病有暴露了,被高手指出,这明明就是拼接字符串嘛,羞愧难当。

 

继续请教,得出如下:sql += " where t.realName like '%'+?realName + '%'";//抛出异常,还是不行。

 

然后我想换一种方式,借着以前高手的思路:如果两表之间没有关系,就创造关系。//这句话对我影响很大,受益匪浅。 当时是mssql,有2,4,5,16这样的数据格式,这些数字都是另外一张表的标识列,使用charindex来进行关联。跑题了-------

 

我经过google查询,使用了如下sql:sql += " where instr(t.realName,?realName)>0";//能正常查询了,又有点担心某位大神说的,查询使用函数,会造成无法使用索引,造成性能下降,担忧。。

 

午饭后:基友Alex写来一份Sql语句,尝试下,如下:sql += " where t.realName like concat(?realName,'%')";//查询成功,这个是mysql中特有的拼接字符串的方式,着实让我蛋疼。。。题外篇:mssql是用+号拼接,oracle是用||拼接,mysql就是concat(var1,var2,.....)拼接

 

 

总结:1,虽然在前几天帮助同事用concat函数搞定了一个查询,但是到自己使用,却头脑不灵光,惭愧。

 

   2,在毕业时,还整天写参数化查询,工作了却不断找寻偷懒的方法,人变坏了。

 

   3,基础不牢,早晚有一天要补的,我就吃亏了。

 

   4,关于查询中使用函数是否会造成索引失效,有待高手回答。

 

   5,mysql中有个全文检索,貌似是鸡肋。

bitsCN.com
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
php怎么将16进制字符串转为数字php怎么将16进制字符串转为数字Oct 26, 2021 pm 06:36 PM

php将16进制字符串转为数字的方法:1、使用hexdec()函数,语法“hexdec(十六进制字符串)”;2、使用base_convert()函数,语法“bindec(十六进制字符串, 16, 10)”。

php怎么将字符串转换成小数php怎么将字符串转换成小数Mar 22, 2023 pm 03:22 PM

PHP 是一门功能强大的编程语言,广泛应用于 Web 开发领域。其中一个非常常见的情况是需要将字符串转换为小数。这在进行数据处理的时候非常有用。在本文中,我们将介绍如何在 PHP 中将字符串转换为小数。

golang怎么检测变量是否为字符串golang怎么检测变量是否为字符串Jan 06, 2023 pm 12:41 PM

检测变量是否为字符串的方法:1、利用​“%T”格式化标识,语法“fmt.Printf("variable count=%v is of type %T \n", count, count)”;2、利用reflect.TypeOf(),语法“reflect.TypeOf(变量)”;3、利用reflect.ValueOf().Kind()检测;4、使用类型断言,可以对类型进行分组。

php 字符串长度不一致怎么办php 字符串长度不一致怎么办Feb 07, 2023 am 09:58 AM

php字符串长度不一致的解决办法:1、通过mb_detect_encoding()函数查看字符串的编码方式;2、通过mb_strlen函数查看具体字符长度;3、使用正则表达式“preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);”剔除非中文字符即可。

go语言怎么删除字符串中的空格go语言怎么删除字符串中的空格Jan 17, 2023 pm 02:31 PM

删除方法:1、使用TrimSpace()函数去除字符串左右两边的空格,语法“strings.TrimSpace(str)”;2、使用Trim()函数去除字符串左右两边的空格,语法“strings.Trim(str, " ")”;3、使用Replace()函数去除字符串的全部空格,语法“strings.Replace(str, " ", "", -1)”。

如何解决RedHat虚拟机中无法输入双引号的问题?如何解决RedHat虚拟机中无法输入双引号的问题?Dec 30, 2023 pm 08:01 PM

今天不知道修改了什么设置,我在vim里面写程序的时候,发现单引号和双引号都打不出来。双引号打出来的效果是¨¨,这会是导致程序出错!出现这种问题的原因是键盘布局与实际不相符,要进行修改。单/双引号打不出来的解决办法:(备注:如果你的桌面是英文版,请自己进行翻译。)1、点击系统-->选择管理-->选择键盘,将美国国际式改为美国英语式!2、点击系统-->选择首选项-->选择键盘。检查设置是否与下图一致:然后重新打开vim工具,问题应该就解决了!

php字符串函数学习:怎么去掉前面的字符php字符串函数学习:怎么去掉前面的字符Mar 20, 2023 pm 02:33 PM

在开发PHP应用程序时,有时我们需要去掉字符串前面的某些特定字符或者字符串。在这种情况下,我们需要使用一些PHP函数来实现这一目标。本文将介绍一些PHP函数,帮助您轻松地去掉字符串前面的字符或字符串。

php怎么将字符串转为布尔类型php怎么将字符串转为布尔类型Jul 01, 2021 pm 06:36 PM

转换方法:1、在转换变量前加上用括号括起来的目标类型“(bool)”或“(boolean)”;2、用boolval()函数,语法“boolval(字符串)”;3、用settype()函数,语法“settype(变量,"boolean")”。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),