基于工作中遇到的一些问题,总结一下经验:

单双引号的区别

大家都知道 php 里双引号可以解析变量,单引号不可以,其实换行符等特殊情况也需要双引号处理。

   $aWhiteIP = explode('\n', $sWhiteIP);

结果是:

   array(1) { [0]=> string(24) "192.168.0.1 192.168.0.2" }

改成双引号才可以正确解析。

   $aWhiteIP = explode("\n", $sWhiteIP);

结果是:

   array(2) { [0]=> string(12) "192.168.0.1 " [1]=> string(11) "192.168.0.2" }

如果是逗号等作为分隔符,单双引号都一样,但是使用函数的参数最好用双引号。

Textarea的写法


如图,显示是这样子,我还以为 textarea 自带首行缩进,想用css关闭,其实是因为html里多了换行。

<textarea type="text" name="whiteip" style="resize:none;" ><?php echo $aParams['whiteip']; ?>
</textarea>

改成这样就好了。

<textarea type="text" name="whiteip" style="resize:none;" ><?php echo $aParams['whiteip']; ?>
</textarea>

IE的placeholder之坑

做一个联想搜索框,在input里加了placeholder。

<input type="text" placeholder="请选择考试产品" name="examstr" autocomplete="off"
style="text-align:center;width:300px;" >

Chrome下是正常的。
单击出现选择框:

选中后赋值:

IE下就比较奇怪。
单击出现选择框:

选中后却无法赋值,而且选择框也没了,感觉像是点了两下,先点了空白处:

我花了好长时间才发现是placeholder的问题,因为Chrome单击第一下出现指针和选择框,IE是出现指针,同时把提示文字隐藏掉。查了下是因为IE本来不支持placeholder,后来为了兼容留的坑,无法正常触发事件。

in_array区分大小写

很多时候用 in_array 对输入数据判断是否重复,而诸如邮箱等是不区分大小写的,可以用 strtolower 统一转成小写比较。

if(in_array(strtolower($val), array_map('strtolower',$arr)))

如果只是比较两个字符串(不区分大小写),可以用 strcasecmp,相等则返回0。

strcasecmp("shanghai","SHANGHAI");

host文件的位置

1 虚拟机配置或者网页url跳转:

目录 C:\Windows\System32\drivers\etc\hosts

增加ip和网站地址,比如:
10.100.51.148 internal.51job.com
10.100.3.163 zhiding.com.cn

2 虚拟机内部代码访问:

目录 etc/hosts

增加ip和网站地址,比如:
10.100.2.10 openapi.51job.com
10.100.3.172 vapi.51job.com

windows切换路径


和Linux不同,这个时候是没用的,并没有切换到指定路径。


再输入D:就切换到D盘下了。

disabled取不到值

做一个单选框,由于业务需要只能单向变更,发现设置disabled的值获取到都是空,可能html发现加了disabled属性就使得value失效,需要在后台判断并重新赋值。

<td nowrap>
<input type="radio" name="chatauthstatus" value="0" > 是
<input type="radio" name="chatauthstatus" value="1" disabled>否
</td>

包括checkbox也是如此,像下面这样是取不到值为1的。

<input name="isvar" type="checkbox" value="1" checked disabled>

PHP的引用传值

官方文档要求是放在函数定义的参数里:

function operateUserInfo($inputpara, &$aCrmcreditContact)

其实在传参时也可以,相当于把变量地址传过去了,操作了变量本身。

$aUserResult = $this->operateUserInfo($inputpara, &$aCrmcreditContact);

强制类型转换

如果是把字符串转成数字,要注意整形的最大值是2147483647,超过这个数字不管是用 (int) 还是用 intval() 都会改成它。

 if(in_array($sKey, array('ctmid','userid','ctrid','accid','accsubid')) && $sVal !== '') {$sVal = (int)$sVal;}

有些Java接口会要求传参id为数字类型,但合同id等可能超过整形最大值的还得字符串。

json_encode和编码转换

json_encode只支持UTF-8,通常用GBK调接口需要把中文及其 符号 转码。

在没有转码的情况下:

  1. 中文逗号会导致 整个 json_encode失败,返回false,低版本PHP返回null。
  2. 其他中文符号会导致 单个 转换失败变成null。像这样:“dbid”:“1”,“divids”:null,“email”

兼容中英文符号可用str_replace替换,或者用iconv转码使其能正确解析。

htmlspecialchars的传参

/*
*  @param string $p_sInput 需要进行HTML实体转换的字符串* @param string $p_iFlag  转换方式* @param string $p_sEncoding 转换编码
*/
$return = htmlspecialchars($p_sInput, $p_iFlag, $p_sEncoding);

其中$p_iFlag 为 ENT_COMPAT 则只转换双引号,为 ENT_QUOTES 则同时转换双引号和单引号。
此函数不提供GBK编码,因此可能有些字会被转换成空,如果转空,可以通过str_replace来实现。

if (empty($return))
{$return = str_replace(array('&', '"', "'", '<', '>'), array('&amp;', '&quot;', ''', '&lt;', '&gt;'), $input);
}

Mysql insert 语句

insert into s_el_solution_relation('solutionid','lessonid','rank','status')values(?,?,?,?)"

数据没进去也没有报错,返回status=1,但是affected_rows为空,也没有id。
查询 MYSQL_CMNUPD.out 日志:

2022-09-23 09:33:31 Error:ServiceName=[MYSQL_CMNUPD.group11.master0] Error=[Call mysql_stmt_prepare failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '‘solutionid’,‘lessonid’,‘rank’,‘status’ at line 1] Recvbuf=[0|insert into s_el_solution_relation(‘solutionid’,‘lessonid’,‘rank’,‘status’)values(?,?,?,?)|8|4|94|0|1] Errno=[1064]

1064错误是关键字冲突,突然发现字段误加了引号,这样status就会认为是关键字,导致报错。

工作中常见问题汇总(不定期更新)相关推荐

  1. HoloLens 2 打包发布过程中 常见问题汇总(长期更新)

    HoloLens 2 打包发布过程中 常见问题汇总(长期更新)                   目 录 1. Unity 中发布Hololens的时候界面变灰,提示无发布权限. 2. Unity发 ...

  2. fastText中常见问题汇总

    fastText中常见问题汇总: 1.什么是fastText fastText是一个用于文本分类和词向量表示的库,它能够把文本转化成连续的向量然后用于后续具体的语言任务,目前教程较少! 2.为什么训练 ...

  3. 【帆软报表】使用技巧及常见问题汇总-持续更新

    [帆软报表]使用技巧及常见问题汇总-持续更新 1.重复与冻结设置,做用:冻结区域 模板-重复与冻结设置 2.单元格有效小数设置 选中单元格-格式-数字-#0.00 3.图表中有效小数设置 图表属性表- ...

  4. 技术部工作中常见问题(o_company)

    技术部工作中常见问题,请大家在周六下班前回答完毕回复给我,如果不知道怎么回复的请注明"不确定该如何处理,需培训",如果有更多常见问题又不知道如何处理,请补充到后面. 1.      ...

  5. ROS与gazebo中常见问题【持续更新中】

    ROS中常见问题 [gazebo] Spawn service failed. Exiting gazebo模型与服务器 gazebo中添加动态障碍物 [actor] [ROS] rosdep ins ...

  6. 期货开户中常见问题汇总

    期货公司提供全方位交易软件: 行情软件:文华.富远.彭博.通达信等: 交易软件:闪电手.文华财经.易盛.金仕达.TB.MC等软件,满足不同需求的投资者. 手机交易软件:支持云条件单.止盈止损.价格预警 ...

  7. cloudstack java_CloudStack 故障排查汇总-不定期更新

    工作中经常用到CloudStack,过程中发现的一些故障排查分享出来,希望可以帮到大家. 一.添加主机失败 现象1:[root@mgmt ~]# tail -f /var/log/cloudstack ...

  8. Enum类的非一般用法汇总(工作中遇到时持续更新)

    1.  每个枚举实例定义一套自己的方法示例: 1 @AllArgsConstructor2 public enum BroadcastTypeEnum {3 ALL(0, "全站" ...

  9. PbootCMS建站系统日常使用过程中常见问题汇总

    博主抽空整理了一份PbootCMS新手常见问题导航.可以使用Ctrl+F进行搜索查阅. 或者你遇到其他棘手的问题也可以加群交流QQ群:PB教程网交流群,点击即可加入 汇总列表 1.PbootCMS图片 ...

最新文章

  1. GAN生成的结果多样性不足怎么办?那就再添一个鉴别器!
  2. Jeff Dean亲自揭秘谷歌下一代AI架构:通用、稀疏且高效,网友不买帐:毫无新意...
  3. ASP.NET自定义错误页面(转)
  4. 项目怎么部署到服务器上_项目开发学习 云服务器的部署
  5. IDE-Ecplise-代码注释 模版 编码规范 配色
  6. 自己开发的一款基于PagedDataSource的datalist repeater控件,只需要在源程序中添加三行代码,即可实现通用分页
  7. 如何在苹果Mac上通过通知中心禁用通知?
  8. android launcher主要功能_Android 或有新变化,语音搜索进一步强化
  9. 计算机基础课在护理专业中的应用,计算机基础教育在护理教育中的应用论文.doc...
  10. java 图片合成pdf_Java将图片组合成PDF文件的方法
  11. 最详细最好的Multisim模拟电路仿真教程(附视频教程)
  12. 网络故障排查的思路和方法
  13. 如何在 iPhone 和 iPad 上将你的照片转换为 PDF?
  14. 初等数论及python应用
  15. Android教父高焕堂谈Android“开源”与“兼容”
  16. Docker的镜像管理
  17. 「数据科学」数据科学家为什么该学习PostgreSQL
  18. Vim 编辑器及其基本操作
  19. 大数据干货,1个案例讲清楚精准营销!
  20. 自动化1121和1122班学生链接

热门文章

  1. 弱电信息工程造价管理-建设单位管理费的说明
  2. oracle怎么增加一个dg备库,如何在单机实现多个dg备库,并切换到其中一个备库...
  3. 简单快速处理网络请求超时的方法
  4. 4计算机设备与环境安全——原理及分析
  5. kongshoudao-fangdai
  6. python:关于三维装箱问题的算法研究-3
  7. 今天吃什么随机网页_ 甘蔗有什么营养价值?怎样吃养生效果好?今天来告诉你...
  8. 提升品牌曝光,小红书近期不容错过的内容趋势是什么?
  9. 200-Smart学习笔记:置位和复位编程案例
  10. 恶搞《卖拐》之QQ自由幻想版