一道php笔试题

原文地址: http://www.walu.cc/php/a-bishiti.md 问题: 请找出下面代码中的问题,修复并优化。 100个。 //注册新用户,要求用户名与email不能与以前的重复。 $mysqli= newMysqli($host,$user,$pass); for($i=0;$iquery("SELECT * FROM `demo` WHERE `uname`=$info['uname']"); $re_2= $mysqli->query("SELECT * FROM `demo` WHERE `email`=$info['email']"); if(!$re_1|| !$re_2) { $mysqli->query("INSERT INTO `demo` (`uname`, `email`) VALUES('$info['email']', '$info['uname']')"); } } 答案: 基础:应该把count提到循环外。 基础:在字符串中拼装数组时候应该用 { 与 } 括起来。 基础:!$re_1 || $re_2应该是!$re_1 && !$re_2或者!($re_1 || $re_2)。 基础:insert语句的values部分两个字段顺序错了。 性能:uname与email两个语句应该拼装成一个OR语句。 性能:应该把所有SELECT拼装一个Sql,然后去除冲突的,再把剩余的通过批量插入的方式通过一条Sql插入。 性能:for应该该用foreach。 安全:参数没有过滤,但回答htmlspecialchars\addslashes而非mysqli->real_escape_string的减分。 其它:query前没有USE database之类的操作,没有SET NAMES,能回答上来的比较细心。 其它:没有错误处理。 分类: PHP 标签: PHP 好文要顶 关注我 收藏该文 dhtayi 关注 - 35 粉丝 - 14 +加关注 0 0 « 上一篇:来了一波神操作,把所有文章都删了。。。 » 下一篇:JetBrain系列IDE提示Filesystem Case-Sensitivity Mismatch的解决 posted @ 2018-09-17 21:34 dhtayi 阅读(69) 评论(0) 编辑 收藏 刷新https://www.cnblogs.com/dhtayi/p/9660995.html
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信