Вставить данные в столбец, если в столбце нет данных - PullRequest
0 голосов
/ 21 ноября 2018

Как вставить данные в столбец, если в этом столбце нет значений?Этот фрагмент кода не будет вставлять никаких значений, если я не удалю оператор if.Конечно, это не то, что я хочу, так как это означает, что каждый раз, когда код запускается, в столбец «группа данных» будет вставляться больше данных.

include('dg_config.php');

# select column datagroup from table data
$stmt = $db -> prepare("SELECT datagroup FROM data");

$stmt->execute();

# fetch rows from data
while($row = $stmt->fetch()){

if (empty($row['datagroup'])){
    $insertdg = "INSERT INTO data (datagroup)
     VALUES ('Data Definitions'),('Policies'),('Systems and Process Documents'),('Purchase Orders'),('Invoices')";
    $db ->exec($insertdg);

}
}

PS dg_config.php содержит переменную $ db, которая используется для подключения к MySQL.Кроме того, у меня нет значений в столбце, поэтому ОБНОВЛЕНИЕ не будет работать.

Желаемый вывод:

Desired output

1 Ответ

0 голосов
/ 21 ноября 2018

Если вы хотите проверить, нет ли вначале записей, а затем только вставить значения, быстрый способ определить, не удалось ли fetch() получить строку, затем выполнить вставку ...

include('dg_config.php');

# select column datagroup from table data
$stmt = $db -> prepare("SELECT datagroup FROM data");

$stmt->execute();
if ( !$stmt->fetch() ){
    $insertdg = "INSERT INTO data (datagroup)
     VALUES ('Data Definitions'),('Policies'),('Systems and Process Documents'),('Purchase Orders'),('Invoices')";
    $db ->exec($insertdg);

}
// re fetch the data
$stmt->execute();

Это полностью удаляет цикл while().

...