php从数据库中选取ID在数组中存在的记录,并按数组中的顺序排列?
比如$arr={"5","7",1"","10","3","8"},要从数据库中选取ID值为5,7,1,10,3,8的记录,并且按这个顺序排列。
------解决方案--------------------
- SQL code
SELECT * FROM table WHERE id IN(5,7,1,10,3,8) ORDER BY FIND_IN_SET(id,'5,7,1,10,3,8'); <br><font color="#e78608">------解决方案--------------------</font><br> //我的测试结果显示PHP排序速度优于MySQL排序速度,刷新了NN次只有1次是PHP慢过MySQL的,请大家也测试一下吧<br><br><?php <br>//date_default_timezone_set('Asia/Shanghai');? <br>$link = mysql_connect('localhost','root');<br>mysql_select_db('test');<br><br>$timeS1 = microtime();<br>$sql = "SELECT * FROM `lean` WHERE id IN(5,7,1,10,3,8) ORDER BY FIND_IN_SET(id,'5,7,1,10,3,8')";<br>//for($i = 1, $i $result = mysql_query($sql);<br> while($row = mysql_fetch_array($result))<br> {<br> <br> }<br>//}<br>$timeE1 = microtime();<br>echo '由数据库自行处理的起止时差为: '.($timeE1 - $timeS1).'<br>';<br><br>//释放译一下php的内存先,免得因为前面的变量影响了效率<br>unset($timeS1);<br>unset($timeS2);<br>unset($link); //已经自动设定了活动数据库了,当前调试不用传递这个,所以把它也释放了吧<br>unset($sql);<br>unset($result);<br>unset($row);<br><br><br><br>//////////////////////<br>$timeS2 = microtime();<br>$sql = "SELECT * FROM `lean` WHERE id IN(5,7,1,10,3,8)";<br>$result = mysql_query($sql);<br>$data = array();<br>$i = 0;<br>while($row = mysql_fetch_array($result))<br>{<br> $data[$row['id']] = $row;<br> $i++;<br>}<br><br>$r = sortdata($data, array(5,7,1,10,3,8));<br><br>$timeE2 = microtime();<br>echo '由PHP处理的起止时差为: '.($timeE2 - $timeS2);<br><br>echo '<pre class="brush:php;toolbar:false">排序结果<br>';<br>print_r($r);<br>echo '';
//排序函数
function sortdata($arr,$order){
$r = array();
$i = 0;
foreach($arr as $key => $value){
$r[$order[$i]] = $value;
$i++;
}
return $r;
}

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

“mysql-connector”是mysql官方提供的驱动器,可以用于连接使用mysql;可利用“pip install mysql-connector”命令进行安装,利用“import mysql.connector”测试是否安装成功。

在mysql中,是否需要commit取决于存储引擎:1、若是不支持事务的存储引擎,如myisam,则不需要使用commit;2、若是支持事务的存储引擎,如innodb,则需要知道事务是否自动提交,因此需要使用commit。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

记事本++7.3.1
好用且免费的代码编辑器

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能