我的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;
正确设置了所有变量。 这是有趣的事情。似乎一切都在数据库中正确插入......
任何人都知道为什么会显示此警告?
此致 尼古拉
答案 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()
方法时,就会发生错误!