ReadQuestionsToDbFromCsvFile.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. $HOST = 'nordh.xyz';
  3. $USERNAME = 'narKampen';
  4. $PASSWORD = '9Bq.6[AcTc2ADwN-';
  5. $DATABASE = 'narKampen';
  6. $PORT = '3306';
  7. if (!isset($argv[1]) || !str_contains($argv[1], '.csv')) {
  8. echo 'Needs to supply a .csv with questions and answers';
  9. die();
  10. } else {
  11. $file = $argv[1];
  12. $category = substr($argv[1],strripos($argv[1], DIRECTORY_SEPARATOR)+1,-4);
  13. $category = str_replace("_", " ", $category);
  14. }
  15. try {
  16. $dbh = new PDO(
  17. 'mysql:host=' . $HOST . ';dbname=' . $DATABASE,
  18. $USERNAME,
  19. $PASSWORD
  20. );
  21. } catch (PDOException $e) {
  22. echo '<h1>An error har occured. </h1><pre>', $e->getMessage(), '</pre>';
  23. die();
  24. }
  25. $sth = $dbh->query("SELECT id FROM Category WHERE name = '$category'");
  26. $sth->setFetchMode(PDO::FETCH_ASSOC);
  27. $result = $sth->fetchAll();
  28. if (count($result) > 0) {
  29. foreach ($result as $r) {
  30. echo "Category Id: " . $r['id'] . "\n";
  31. $categoryId = $r['id'];
  32. }
  33. } else {
  34. // Insert new category??
  35. echo "Category not found $category" . PHP_EOL;
  36. die();
  37. }
  38. $csv = fopen($file,'r');
  39. while (!feof($csv)) {
  40. $csvArray[] = fgetcsv($csv,1000,',');
  41. }
  42. fclose($csv);
  43. foreach ($csvArray as $value) {
  44. $data = ['question' => $value[1],
  45. 'answer' => $value[0]];
  46. $sth = $dbh->prepare('INSERT INTO Questions (question, answer) VALUES (:question, :answer)');
  47. try {
  48. $sth->execute($data);
  49. $questionId = $dbh->lastInsertId();
  50. $sth2 = $dbh->prepare('INSERT INTO QuestionToCategory (questionId, categoryId) VALUES (:questionId, :categoryId)');
  51. $questionLinkData = ['questionId' => $questionId, 'categoryId' => $categoryId];
  52. $sth2->execute($questionLinkData);
  53. } catch (Exception $e) {
  54. echo '<h1>An error has ocurred.</h1><pre>', $e->getMessage(), '</pre>';
  55. }
  56. }
  57. ?>