MySQL表格不能从PHP数组

时间:2015-06-30 02:01:13

标签: php mysql arrays

我正在从CSV文件中读取行并存储在PHP数组中。我创建了一个将数组内容保存到MySQL表中的函数。但是,它只保存了大约210行,而数组的位置超过100K ......我检查了数组大小,它显示的内容远远多于保存到数据库中的内容。 MySQL接受的每个操作都有限制吗?

此外,MySQL没有显示任何错误。它只会加载那些少量记录而且就是它。

我的功能:

    function save_uar($data)
{       
    if (isset($data))
    {               
        foreach($data as $row)
        {
            $id = $row['_id'];
            $period = $row['period'];
            $reviewStatus = $row['reviewStatus'];
            $dataSource = $row['dataSource'];
            $dataId = $row['dataId'];
            $offset = $row['offset'];
            $employeeId = $row['employeeId'];
            $firstName = $row['firstName'];
            $lastName = $row['lastName'];
            $resourceName = $row['resourceName'];
            $resourceType = $row['resourceType'];
            $resourceUserId = $row['resourceUserId'];
            $role = $row['role'];
            $reference = $row['reference'];
            $resourceGroup = $row['resourceGroup'];
            $businessUnit = $row['businessUnit'];
            $lifeCycle = $row['lifeCycle'];
            $userComment = $row['userComment'];
            $extractDate = $row['extractDate'];
            $reason = $row['reason'];
            $reviewDate = $row['reviewDate'];
            $reviewerId = $row['reviewerId']
            $sql = "INSERT INTO uar VALUES (
            '".$id."', '
            ".$period."', '
            ".$reviewStatus."', '
            ".$dataSource."', '
            ".$dataId."',
            ".$offset.", 
            ".$employeeId.", '
            ".$firstName."', '
            ".$lastName."', '
            ".$resourceName."', '
            ".$resourceType."', '
            ".$resourceUserId."', '
            ".$role."', '
            ".$reference."', '
            ".$resourceGroup."', '
            ".$businessUnit."', '
            ".$lifeCycle."', '
            ".$userComment."', '
            ".$extractDate."', '
            ".$reason."', '
            ".$reviewDate."', '
            ".$reviewerId."'
            ); ";
            $result = $this->db->query($sql);           
    }
}
}

2 个答案:

答案 0 :(得分:1)

正如@ Num6所暗示的那样,在转义变量后代码工作了。我使用了CodeIgniter函数:

$sql = "INSERT INTO uar VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 

            $result = $this->db->query($sql, array($id, $period ,$reviewStatus, $dataSource, $dataId, $offset, $employeeId,
            $firstName, $lastName, $resourceName, $resourceType, $resourceUserId, $role,
            $reference, $resourceGroup, $businessUnit, $lifeCycle, $userComment, $extractDate,
            $reason, $reviewDate, $reviewerId));

当我尝试直接从浏览器运行该函数时,我确认了这个问题(之前我遵循了jquery结果)。 现在,我在插入执行查询所花费的时间方面遇到了问题,但这是另一个与此主题没有直接关系的问题。

谢谢大家!

答案 1 :(得分:0)

也许其中一个查询会停止,因为它为其列提供了无效数据?

是否已启用错误和警告消息?您可以在PHP的顶部执行此操作:

error_reporting(E_ALL);
ini_set('display_errors', 1);

让它停在一个糟糕的查询上来抓住它:

if ($result === false) exit(0);

您应该考虑一次读取一个csv行,并将其传递给预准备语句,而不是使用100k数组填充数组。