проверка php mysql, если таблица существует с использованием pdo - PullRequest
0 голосов
/ 21 марта 2019

У меня есть следующий код, чтобы увидеть, существует ли таблица (на основе выбора пользователя) или нет, но она дает мне следующую ошибку:

[21 марта 2019 11:34: 11 UTC] Неустранимая ошибка PHP: Uncaught PDOException: SQLSTATE [42S02]: Базовая таблица или представление не найдены: 1146 Таблица 'filecleaner.opened_2019-03-21' не существует в C: \ inetpub \ wwwroot \ FileCleaner \ consultas.php: 126 Трассировка стека: 0 C: \ inetpub \ wwwroot \ FileCleaner \ consultas.php (126): PDOStatement-> execute (Array) 1 {main}, брошенный в C: \ inetpub \ wwwroot \ FileCleaner \ consultas.php, в режиме онлайн126

                 $pdo = Database::connect();
                 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $stmt = $pdo->prepare("SELECT * FROM filecleaner.`Opened_". $DataDeConsulta ."`");
                $stmt->execute([$DataDeConsulta]);
                $count = $stmt->fetchColumn();
                if ($count <= 0) {
                $DataDeConsultaError = 'There is no information on that date!';
                 $valid = false;
                }
                if (isset($valid)) {
                    $pdo = Database::connect();
                    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                    $sql = "SELECT * FROM filecleaner.`Opened_". $DataDeConsulta ."`";
                    //session_start();
                    $_SESSION['DataDeConsulta'] = $DataDeConsulta;
                    $query_result=$pdo->query($sql);
                    foreach ($pdo->query($sql) as $row) {
                        echo '<tr>';
                        echo '<td>'. htmlentities($row['Emails']) . '</td>';
                        echo ' ';
                        echo '</td>';
                        echo '</tr>';
                    }
                    Database::disconnect();
                }

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Вы пытались использовать этот синтаксис try-catch?

/**
* Check if a table exists in the current database.
*
* @param PDO $pdo PDO instance connected to a database.
* @param string $table Table to search for.
* @return bool TRUE if table exists, FALSE if no table found.
*/
function tableExists($pdo, $table) {

// Try a select statement against the table
// Run it in try/catch in case PDO is in ERRMODE_EXCEPTION.
try {
    $result = $pdo->query("SELECT 1 FROM $table LIMIT 1");
} catch (Exception $e) {
    // We got an exception == table not found
    return FALSE;
}

// Result is either boolean FALSE (no table found) or PDOStatement Object (table found)
return $result !== FALSE;
}
0 голосов
/ 21 марта 2019

Вы можете использовать этот выбор, чтобы увидеть, существует ли таблица в mysql / mariadb:

SELECT * FROM information_schema.tables WHERE table_schema = 'you-database-name' AND table_name = 'your-table-name';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...