Я выполняю проект и использую PDO внутри класса, все функции работают как шарм, но у меня есть тот, который возвращает неверную ошибку источника данных, вот текстовая копия:PDO недопустимый исходный код источника данных
Fatal error: Uncaught exception 'PDOException' with message 'invalid data source name' in /home/decoded/public_html/studiobug/xxxx/class.php:194
Stack trace:
#0 /home/decoded/public_html/studiobug/xxxx/class.php(194): PDO->__construct('DB_DSN', 'DB_USERNAME', 'DB_PASSWORD') #1 /home/decoded/public_html/studiobug/xxxx/deleteQuiz.php(5): Admin->goodByeQuiz('2') #2 {main} thrown in /home/decoded/public_html/studiobug/xxxx/class.php on line 194
И вот 2 общедоступных функции внутри класса, первый из них отлично работает, а второй - тот, который возвращает мне эту ошибку. Я не могу найти то, что происходит, поскольку код почти тот же, меняются только запросы.
public function saveEditQuestions($quizno,$todo) {
$table = "quiz".$quizno."Questions";
$sql = "";
$sql .= "TRUNCATE $table;";
foreach ($todo as $c => $v){
$sql .= "INSERT INTO $table SET ";
$sql .= "option1 = '".$v['Answer1']."', ";
$sql .= "option2 = '".$v['Answer2']."'; ";
}
$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$con->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
try {
$stmt = $con->prepare($sql);
$success = $stmt->execute();
return $success;
}
catch (PDOException $e)
{
echo $e->getMessage();
die();
}
}
public function goodByeQuiz($del) {
$table1 = "quiz".$del."Questions";
$table2 = "quiz".$del."Results";
$sql = "UPDATE formStatus set active = 0 WHERE formNumber = $del;";
$sql .= "TRUNCATE $table1;";
$sql .= "TRUNCATE $table2;";
$con = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$con->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
try {
$stmt = $con->prepare($sql);
$success = $stmt->execute();
return $success;
}
catch (PDOException $e)
{
echo $e->getMessage();
die();
}
}
Определили ли вы DB_DSN, DB_USERNAME и DB_PASSWORD? –
Да, конечно, первая функция (saveEditQuestions) работает нормально, когда я вызываю вторую, я получаю это исключение –
Тот факт, что stacktrace упоминает '' DB_DSN'' (строка), указывает, что такой константы нет (если вы проверите в журнале ошибок PHP вы увидите уведомление PHP, жалующееся на это). Просмотрите код, который определяет эти константы, скорее всего, он не будет включен, когда вы вызываете вторую функцию. – DCoder