我有一个奇怪的问题...
我使用API从GoogleSheet获取数据。然后,我将这些数据插入数据库中。
但是问题是,当我在数据库中插入这些数据时,空白单元格被上述数据替换。我不想要它,如果我有一个空白单元格,我想像一个空值一样将其插入数据库中。
例如,在这张图片中,当我插入数据时,将插入“ cynthia itua”,而不仅仅是“ cynthia”:firstname / lastname
这是该表的屏幕截图。 Table structure
我需要做什么?
这是我的代码: StrAdaptator,DataAdaptator和PhoneAdaptator只是用于格式化数据的少数类。
public function eventsData()
{
$range = 'Events';
$values = [];
Sheetapi::getSpreadsheetData($values, $range);
if (empty($values)) {
print "No data found.\n";
} else {
$keys = array_shift($values);
// print_r($keys);
$fields = [];
foreach ($values as $row) {
if (!empty($row)) {
StrAdaptator::f($fields, 'event', $row[array_search('Event Name', $keys)]); //colonne A
StrAdaptator::f($fields, 'type', $row[array_search('Event Type', $keys)]); //colonne B
DateAdaptator::f($fields, 'date', $row[array_search('Event Date', $keys)], DateAdaptator::YYYYMMDDshort); //colonne C
StrAdaptator::f($fields, 'city', $row[array_search('City', $keys)]); //colonne E
StrAdaptator::f($fields, 'firstname', $row[array_search('First Name', $keys)]); //colonne F
StrAdaptator::f($fields, 'lastname', $row[array_search('Last Name', $keys)]); //colonne G
EmailAdaptator::f($fields, 'email', $row[array_search('Email', $keys)]); //colonne H
StrAdaptator::f($fields, 'phone', $row[array_search('Phone', $keys)]); //colonne I
PhoneAdaptator::f($fields, 'E164', $row[array_search('Phone', $keys)]); //colonne I
StrAdaptator::f($fields, 'socialMediaHandle', $row[array_search('Social Media Handle', $keys)]); //colonne J
StrAdaptator::f($fields, 'musicalGenre', $row[array_search('Musical Genre', $keys)]); //colonne K
StrAdaptator::f($fields, 'market', 'B2C'); //colonne L
}
try {
Agnostik::sql_insertUpdate('events', $fields, self::WITH_SQL_LOG);
} catch (PDOException $e) {
echo "\r\n" . 'PDO Exception: ' . $e->getMessage();
}
print_r($fields);
}
}
}
答案 0 :(得分:0)
您的问题是您不会在每次循环转弯时重置$fields
,所以当$row
为空时,它将保持先前的值。
请尝试使用以下修改的代码,或者如果需要使用else
专门插入空值,请添加$fields
。
foreach ($values as $row) {
$fields = []; //Move this line inside the loop
if (!empty($row)) {
StrAdaptator::f($fields, 'event', $row[array_search('Event Name', $keys)]); //colonne A
StrAdaptator::f($fields, 'type', $row[array_search('Event Type', $keys)]); //colonne B
DateAdaptator::f($fields, 'date', $row[array_search('Event Date', $keys)], DateAdaptator::YYYYMMDDshort); //colonne C
StrAdaptator::f($fields, 'city', $row[array_search('City', $keys)]); //colonne E
StrAdaptator::f($fields, 'firstname', $row[array_search('First Name', $keys)]); //colonne F
StrAdaptator::f($fields, 'lastname', $row[array_search('Last Name', $keys)]); //colonne G
EmailAdaptator::f($fields, 'email', $row[array_search('Email', $keys)]); //colonne H
StrAdaptator::f($fields, 'phone', $row[array_search('Phone', $keys)]); //colonne I
PhoneAdaptator::f($fields, 'E164', $row[array_search('Phone', $keys)]); //colonne I
StrAdaptator::f($fields, 'socialMediaHandle', $row[array_search('Social Media Handle', $keys)]); //colonne J
StrAdaptator::f($fields, 'musicalGenre', $row[array_search('Musical Genre', $keys)]); //colonne K
StrAdaptator::f($fields, 'market', 'B2C'); //colonne L
}
try {
Agnostik::sql_insertUpdate('events', $fields, self::WITH_SQL_LOG);
} catch (PDOException $e) {
echo "\r\n" . 'PDO Exception: ' . $e->getMessage();
}
print_r($fields);
}