批量上传循环时没有mysqli结果

时间:2016-08-14 10:11:26

标签: php excel mysqli

我正在尝试创建批量上传功能以将用户添加到数据库中。我有一个函数可以向db添加单个用户的详细信息,我从一个从excel表中读取的while循环中调用它:

$excel = new Spreadsheet_Excel_Reader();
$excel->read($target_file);

        $company = mysql_prep($_POST["company"]);

while($x<=$excel->sheets[0]['numRows']) {
            $username = isset($excel->sheets[0]['cells'][$x][1]) ? $excel->sheets[0]['cells'][$x][1] : '';
            $email = isset($excel->sheets[0]['cells'][$x][2]) ? $excel->sheets[0]['cells'][$x][2] : '';

            //generate random password
            $password = generate_random_password();

            //hash the password
            $hashed_password = password_encrypt($password);
            $status = "Employee";

            //save details in db
            $result = add_single_user($username, $hashed_password, $email, $status, $company); }

函数add_single_user在从此循环外部调用时返回结果,但不会如上所示插入用户。我已经检查过excel阅读器正在读取这些值并被分配。这是功能:

function add_single_user($username, $hashed_password, $email, $status, $company){
global $connection;
$safe_username = mysqli_real_escape_string($connection, $username);
$safe_email = mysqli_real_escape_string($connection, $email);
$safe_status = mysqli_real_escape_string($connection, $status);
$safe_company = mysqli_real_escape_string($connection, $company);

$query  = "INSERT INTO users (";
$query .= "  username, hashed_password, email, status, company";
$query .= ") VALUES (";
$query .= "  '{$safe_username}', '{$hashed_password}', '{$safe_email}', '{$safe_status}', '{$safe_company}'";
$query .= ")";
$result = mysqli_query($connection, $query);
return $result;

}

1 个答案:

答案 0 :(得分:0)

对于INSERT查询,Array#reduce应返回mysqli_querytrue

假设false实际上包含数据库连接的对象,则查询应该有效(除了可能插入数据库的VALUES部分中的花括号)。

尝试查看$connectionmysqli_connect_error()是否在连接或查询中发送错误(无论如何,控制在建立与DB的连接时是否存在任何错误都是一种很好的做法执行查询)。

此外,我建议您使用prepared statements而不是使用mysql_prep,real_escape_string和mysqli_query,因为它们对注入无效。