Codeigniter插入数据导致PHP警告

时间:2014-03-03 16:02:27

标签: php database codeigniter warnings

我的Codeigniter应用程序出现问题。 我正在使用虚拟Windows Server 2008 R2,IIS,MSSQL和PHP

当我尝试在数据库中插入新记录时,我收到以下警告(对于每个插入):

  

遇到PHP错误

     

严重性:警告

     

消息:array_shift()期望参数1为数组,给定

为null      

文件名:sqlsrv / sqlsrv_driver.php

     

行号:423

我正在使用的代码:

$data = array(
                'DataTypeSpecification'         => $dataTypeSpecID,
                'DocumentCode'                  => $docCode,
                'Title'                         => $title,
                'ProjectCode'                   => $projectCode, 
                'Process'                       => $process, 
                'Author'                        => $author,
                'Status'                        => $status,
                'Version'                       => $version, 
                'DateApproval'                  => $dateApproval,
                'Medium'                        => $medium, 
                'PaperArchivedDate'             => $paperArchivedDate, 
                'DMSArchivedDate'               => $DMSArchivedDate,
                'EDocDocument'                  => $eDocDocument,
                'Wildcard'                      => $wildcard, 
                'SequentialNumber'              => $seqNumber, 
                'Location'                      => $location, 
                'ArchivedShelf'                 => $archivedShelf,
                'Container'                     => $container, 
                'Remarks'                       => $remakrs, 
                'APDProjectStatus'              => $APDProjectStatus, 
                'SelectedForIND'                => $selectedForIND);

$result = $this->db->insert('dbo.ProjectRecords', $data);
return $result;

正确设置了所有变量。 这是有趣的事情。似乎一切都在数据库中正确插入......

任何人都知道为什么会显示此警告?

此致 尼古拉

1 个答案:

答案 0 :(得分:1)

所以,我不得不编辑驱动程序本身。 我更改了文件system/database/sqlsrv/sqlsrv_driver.php 两个函数_error_message()(第407行)和_error_number()(第423行)

在他们两个中,我将前两行更改为:

$tmp = sqlsrv_errors();
if($tmp == null) return null;
$error = array_shift($tmp);

因此即_error_number()成为:

function _error_number()
{
    $tmp = sqlsrv_errors();
    if($tmp == null) return null;
    $error = array_shift($tmp);
    return isset($error['SQLSTATE']) ? $error['SQLSTATE'] : null;
}

sqlsrv_errors()返回NULL以来发生错误,将NULL传递给array_shift()方法时,就会发生错误!