博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一道php笔试题
阅读量:4879 次
发布时间:2019-06-11

本文共 833 字,大约阅读时间需要 2 分钟。

问题:

请找出下面代码中的问题,修复并优化。

100个。//注册新用户,要求用户名与email不能与以前的重复。$mysqli= newMysqli($host,$user,$pass);for($i=0;$i
query("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,能回答上来的比较细心。
  • 其它:没有错误处理。

转载于:https://www.cnblogs.com/idlo/p/9660995.html

你可能感兴趣的文章
Python标准模块--Iterators和Generators
查看>>
Introduction Sockets to Programming in C using TCP/IP
查看>>
PHP 简单实现webSocket
查看>>
zookeeper部署搭建
查看>>
navigationController pop回之前控制器
查看>>
汇编语言实验一
查看>>
Web.config配置文件详解(新手必看)
查看>>
selenide总结
查看>>
selenium--控制浏览器和简单元素操作
查看>>
[笔记] imooc《JavaScript深入浅出》对象与函数
查看>>
hdu1078FatMouse and Cheese
查看>>
简单通用线程池的实现
查看>>
长序列处理
查看>>
Java环境----JDK开发环境搭建及环境变量配置
查看>>
$(selector).each() 和$each() 的区别
查看>>
【转】Objective-C Class Dump
查看>>
[转]Rails 3 | Bundler浅尝
查看>>
湖南集训day5
查看>>
使用flask_socketio实现客户端间即时通信
查看>>
android spannableString 替换 textview 中部分文字
查看>>