EoQ_Supporting_Files/setupGroups.php
2025-05-30 21:27:29 +01:00

81 lines
1.6 KiB
PHP

<?php
header('Content-Type: application/json');
if (php_sapi_name() === 'cli') {
echo "Running from command line.\n";
} else {
//echo "Running from browser.\n";
// Basic input validation and sanitization
if (!isset($_POST['action']) || empty($_POST['qid'])) {
echo json_encode(['error' => 'Needs an action to carry out']);
exit;
}
}
// Database connection (adjust credentials accordingly)
//
$config = require 'config.php';
$host = $config['db_host'];
$db = $config['db_name'];
$user = $config['db_user'];
$pass = $config['db_pass'];
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
// Map of QIDs to Response columns
$qidToColumn = [
'QID68' => 'Q1',
'QID69' => 'Q2',
'QID70' => 'Q3'
];
$totalUpdated = 0;
foreach ($qidToColumn as $qid => $column) {
$sql = "
UPDATE Responses r
JOIN Answers a ON r.id = a.responseId
SET r.{$column} = a.value
WHERE a.QID = :qid
AND r.{$column} IS NULL
";
$stmt = $pdo->prepare($sql);
$stmt->execute(['qid' => $qid]);
$rows = $stmt->rowCount();
echo "Updated {$rows} rows for {$qid}{$column}\n";
$totalUpdated += $rows;
}
echo "Total rows updated: {$totalUpdated}\n";
} catch (PDOException $e) {
echo "Database error: " . $e->getMessage();
}