首页
关于
Search
1
阿里云rds数据库mysql版cpu占用100%排查问题过程
1,416 阅读
2
解决Gitlab进行clone、push、pull的时候报错aborting due to possible repository corruption on the remote side. git-pack-objects died with error.index-pack failed问题
1,318 阅读
3
nginx、php-fpm、thinkphp接口请求偶尔返回502导致前端报CORS跨域错误问题
862 阅读
4
使用VMware Workstation pro 15安装黑苹果后,开机卡在logo的问题
802 阅读
5
PHP连接SQLserver报错:SQLSTATE[IMSSP]: This extension requires the Microsoft ODBC Driver for SQL Server to communicate with SQL Server. Access the followin
602 阅读
计算机
数据库
Linux
PHP开发
前端
好文收藏
产品
创业
天天向上
阅读
工作
登录
Search
标签搜索
PHP
ss
pdo
mysql
php8
阅读
摘抄
PHP后端开发技术学习
累计撰写
104
篇文章
累计收到
1
条评论
首页
栏目
计算机
数据库
Linux
PHP开发
前端
好文收藏
产品
创业
天天向上
阅读
工作
页面
关于
搜索到
69
篇与
PHP开发
的结果
2021-05-20
PHP使用pdo查询MySQL数据库整型字段数据全部被转为字符型问题修复过程
因为pdo_mysql扩展没有使用到mysqlnd驱动,所以就算关闭掉整型转换成字符型选项仍然不起效果。使用以下命令查看是否使用mysqlnd驱动:
2021年05月20日
417 阅读
2021-04-29
阿里云rds导出数据SQL,使用Navicat导入到其它数据库失败
使用MySQL命令source来导入
2021年04月29日
319 阅读
2021-04-03
php控制台打印内容换行符号不起作用
把换行符放在双引号里,单引号不会解析。
2021年04月03日
301 阅读
2020-11-05
阿里云云数据库rds新建实例配置白名单后仍然无法访问
解决办法:重启实例
2020年11月05日
182 阅读
2020-08-23
pheanstalk连接到另一台服务器beanstalkd报Socket error 0: 10061 错误
原因:beanstalkd安装后默认监听127.0.0.1地址,从外部连接会导致失败。解决办法:修改/etc/default/beanstalkd配置文件将监听地址改为0.0.0.0,然后重启服务。
2020年08月23日
250 阅读
2020-08-05
富途面试题
在浏览器输入一个域名按回车,接下来会发生什么?请用尽可能少的代码实现一个函数,用于计算用户一个月共计交费多少港元。 用户在富途的平台上进行交易,需要交平台使用费。平台使用费的梯度收费方案如下: 每月累计订单数 每笔订单(港元) 梯度1:1-5笔 30.00 梯度2:6-20笔 15.00 梯度3:21-50笔 10.00 梯度4:51-100笔 9.00 梯度5:101-500笔 8.00 梯度6:501-1000笔 7.00 梯度7:1001-2000笔 6.00 梯度8:2001-3000笔 5.00 梯度9:3001-4000笔 4.00 梯度10:4001-5000笔 3.00 梯度11:5001-6000笔 2.00 梯度12:6001笔及以上 1.00假设一个用户,一个月交易了6笔订单,则在梯度1交费共计:30港元*5=150港元,在梯度二交费:15港元,一共交费165港元求2个有序数组的交集, 第一个数组长度 n, 第二个数组长度 m 1 3 5 7 9 1 3 4 5 6 答案是 1 3 5redis列表的实现原理接口访问超时,怎么快速排查定位问题项目开发过程中遇到的问题,以及怎么解决的?
2020年08月05日
567 阅读
2020-08-05
小鹅通笔试题
使用php实现快速排序(非递归方式)function quickSort($arr = []) { if (empty($arr) || count($arr) == 1) { return $arr; } $stack = [[0,count($arr)-1]]; while ($stack) { $indexRange = array_pop($stack); $leftIndex = $indexRange[0]; $rightIndex = $indexRange[1]; $flag = $arr[$leftIndex]; while ($leftIndex < $rightIndex) { while ($leftIndex < $rightIndex && $arr[$rightIndex] >= $flag) { $rightIndex--; } $arr[$leftIndex] = $arr[$rightIndex]; while ($leftIndex < $rightIndex && $arr[$leftIndex] < $flag) { $leftIndex++; } $arr[$rightIndex] = $arr[$leftIndex]; } $arr[$leftIndex] = $flag; if ($indexRange[0] < $leftIndex - 1) { $stack[] = [$indexRange[0],$leftIndex-1]; } if ($indexRange[1] > $leftIndex + 1) { $stack[] = [$leftIndex+1,$indexRange[1]]; } } return $arr; }写出查找发贴数最多的十个人名字的sql,表结构如下:用户表:t_users(id,username,password ,email,created_at)帖子表:t_post(id,user_id,title,content,created_at)SELECT a.username,COUNT(b.id) AS amount FROM t_users AS a LEFT JOIN t_post AS b ON a.id = b.user_id GROUP BY a.id ORDER_BY amount DESC LIMIT 10;**以下代码需要实现批量(>=100)注册用户到数据库中的功能,要求uname 和 email 不能重复,请找出代码中的错误,并尽可能给出优化建议:**<?php $mysqli= new Mysqli($host,$user,$pass); for($i=0;$i<count($_POST['user_info']);$i++) { $info= $_POST['user_info'][$i]; $sql1= "SELECT * FROM `demo` WHERE `uname`=$info['uname']" $re_1= $mysqli->query($sql1); $sql2= "SELECT * FROM `demo` WHERE `email`=$info['email']" $re_2= $mysqli->query($sql2); if(!$re_1|| !$re_2) { $mysqli->query("INSERT INTO `demo` (`uname`, `email`) VALUES('$info['email']', '$info['uname']')"); } } ?>代码中的错误与优化建议:(1)没有选择数据库进行操作,需要在实例化Mysqli对象时在第4个参数传入数据库名,或者使用$mysqli->select_db($db_name)方法进行选择(2)$sql1和$sql2行尾要以英文分号结束,并且行中的$info[‘uname’]和$info[‘email’]需要用单引号’’以及花括号{}括起来,如’{$info[‘uname’]}’(3)Insert语句的$info[‘uname’],$info[‘email’]数组变量会导致语法错误,需要用花括号{}括起来,并且字段名和值对应顺序错了,VALUES后面应该$info[‘uname’]在前,$info[‘’email]在后(4)$re_1和$re_2不能判断是否存在记录,只能判断是否执行成功,需要用$re_1->num_rows和$re_2->num_rows来判断是否存在记录,并且条件判断不是(!$re_1 || !re_2),而是(!$re_1->num_rows&&!$re_2->num_rows)(5)count($_POST['user_info'])应该放在for循环外,避免每次循环都count一次数组,并且$_POST数据没有进行过滤,需要验证$_POST数据是否有需要的字段,以及过去掉敏感字符,预防SQL注入。(6)$sql1和$sql2应该整合成一条语句来查询,且查询字段不用全部(*),语句如SELECT uname FROM WHERE (uname=’{$info[‘uname’]}’) OR (email=’{$info[‘email’]}’)。(7)代码没有进行错误处理,需要对MySQL的连接和查询进行错误处理。(8)可以拼接SQL语句一次性查询已经存在的记录,然后再一次性插入不存在的记录为了避免其他用户也在同一时刻插入相同的用户数据,可以使用事务加行锁或者给uname和email加unique索引,防止插入相同的记录。给定一个由 n 个正整数组成的数组,正整数的范围为[1, n-1],数组中只有一个数字是重复的,如何快速找出这个数字?假定数组为$arr = [8,5,9,2,4,10,6,7,1,3,10];//n=11,正整数范围[1,10]。第一种方法:通过观察可发现,数组之和等于1到10(1到n-1)的自然数之和加上重复数字,则重复数字等于数组之和减去1到10自然数之和。function findSameElement($arr) { $amount = count($arr); $nutrualNumSum = ($amount-1)*($amount-1+1)/2;//自然数求和公式 $sum = array_sum($arr); return $sum-$nutrualNumSum; }第二种方法:首先将数组进行从小到大排序;然后遍历数组,比较相邻两个元素,相等时的元素便是这个重复的数字。function findSameElement($arr) { sort($arr); $index = count($arr)-1; for ($i=0; $i < $index; $i++) { if ($arr[$i+1] == $arr[$i]) { return $arr[$i]; } } return 0; }第三种方法:定义一个$temp数组并只有一个零或者负数的元素,遍历正整数组成的数组,每次遍历判断当前元素是否存在$temp数组中,如果存在,则这个数就是重复的数字,如果不存在,则将当前元素push到$temp数组中,然后继续判断,直到找出存在于数组的元素。function findSameElement($arr) { $temp = [0]; foreach ($arr as $v) { if (in_array($v, $temp)) { return $v; } $temp[] = $v; } return 0; }
2020年08月05日
318 阅读
2020-08-03
PHP使用end()函数报错:Only variables should be passed by reference
报错的代码如下$end_key=end(array_keys($a_cart_data[$k]['sub_data']));原因end ( array &$array ) : mixed函数需要传入数组的引用,只有变量才能被以引用传入,上面end函数的参数是一个函数的返回值,所以报错。解决办法需要把函数的返回值赋值到一个变量,然后再传入end函数 $item = array_keys($a_cart_data[$k]['sub_data']); $end_key=end($item);
2020年08月03日
309 阅读
1
...
5
6
7
...
9