PHPExcel을 사용하여 MySQL에 xls를 가져옵니다. 최근 PDO에 연결을 전환했습니다. 하지만 그때 오류 협정. NULL 인 내 xls의 필드는 더 이상 허용되지 않습니다. 왜? NULL 값을 허용하도록 코드를 변경하려면 어떻게해야합니까?쿼리를 실행하지 못했습니다 : 1048 'element_oppningar'열은 null이 될 수 없습니다.
PHP :
if(isset($_POST["Import"])){
echo '<a href=".php">Fortsätt...</a><br />';
echo $path=$_FILES["file"]["tmp_name"];
//Load file into PHPExcel
$objPHPExcel = PHPExcel_IOFactory::load($path);
//Loop threw file to get data
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$worksheetTitle = $worksheet->getTitle();
$highestRow = $worksheet->getHighestRow(); // e.g. 10
$highestColumn = 'J'; //$worksheet->getHighestColumn(''); // e.g 'F'
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
//Echo file info
echo "<br>The worksheet ".$worksheetTitle." has ";
echo $nrColumns . ' columns (A-' . $highestColumn . ') ';
echo ' and ' . $highestRow . ' row.';
echo '<br>Data: <table border="1"><tr>';
//Loop threw colum, rows and cells
for ($row = 2; $row <= $highestRow; ++ $row) {
echo '<tr>';
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val = $cell->getCalculatedValue();
//$dataType = PHPExcel_Cell_DataType::dataTypeForValue($val);
echo '<td>' . $val . '<br></td>';
}
echo '</tr>';
}
echo '</table>';
}
for ($row = 2; $row <= $highestRow; ++ $row) {
$val=array();
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val[] = $cell->getCalculatedValue();
}
// Prepare Query
$query = "INSERT INTO table(
objekt_nr,
objekt_rev,
element_nr,
element_hojd,
element_typ,
element_langd,
element_oppningar,
element_vikt,
element_ritare,
element_status)
VALUES (
:objekt_nr,
:objekt_rev,
:element_nr,
:element_hojd,
:element_typ,
:element_langd,
:element_oppningar,
:element_vikt,
:element_ritare,
:element_status
)";
// Security measures
$query_params = array(
':objekt_nr' => $val[0],
':objekt_rev' => $val[1],
':element_nr' => $val[2],
':element_hojd' => $val[3],
':element_typ' => $val[4],
':element_langd' => $val[5],
':element_oppningar' => $val[6],
':element_vikt' => $val[7],
':element_ritare' => $val[8],
':element_status' => $val[9]
);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $ex){ die("Failed to run query: " . $ex->getMessage()); }
데이터베이스에 'not null'로 정의 된 필드가 있습니다. 테이블에서'alter'를 수행하고 not null 제약 조건을 제거하는 것 이외에 코드를 덮어 쓸 수있는 방법은 없습니다. –
@MarcB 확인. 그래서, 내가 mysql을 사용할 때 나는 빈 값을 보냈다. 그래서 나는이 메시지를받지 못했습니다. 루프가 끝나면 NULL이 멈 춥니 다. mysql과 같이 빈 값을 보내려면 어떻게 코드를 바꿀 수 있습니까? 이제 PDO가 있습니까? – N1CKN4M3