一道批量注册用户的面试题

01 May 2016

朋友面试遇到了个题, 看了大牛的解读还是比我要好很多的. 真的是一个简单的东西, 可以做的很精妙, 如果考虑到性能, 安全性, 会有很多很多的点. 而用框架多了, 很多基础的东西, 又难以发现.

转载自 寸谋

问题

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

<?php
// 批量注册用户,每次>100个。
// 注册新用户,要求用户名与email不能与以前的重复。
$mysqli = new Mysqli($host, $user, $pass);
for ($i=0; $i<count($_POST['user_info']); $i++) {
    $info = $_POST['user_info'][$i];

    $re_1 = $mysqli->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']')");
    }
}

答案