PHP mysql проверяет, существует ли таблица, используя pdo

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

[21-Mar-2019 11:34:11 UTC] PHP Fatal error: Uncaught PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'filecleaner.opened_2019-03-21' doesn't exist in C:\inetpub\wwwroot\FileCleaner\consultas.php:126 Stack trace: 0 C:\inetpub\wwwroot\FileCleaner\consultas.php(126): PDOStatement->execute(Array) 1 {main} thrown in C:\inetpub\wwwroot\FileCleaner\consultas.php on line 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();
                }

Возможный дубликат Проверьте, существует ли таблица базы данных, используя PHP/PDO

Guga Nemsitsveridze 21.03.2019 12:42

@GugaNemsitsveridze Ты хоть секунду потратил на просмотр моего вопроса?

Mig 21.03.2019 12:50

прочтите минимальный воспроизводимый пример

betontalpfa 21.03.2019 12:56

Запрос в том виде, в каком он написан в настоящее время, недействителен. У вас нет заполнителя, поэтому $DataDeConsulta не к чему привязываться. Используйте try/catch.

user3783243 21.03.2019 13:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
4
221
2

Ответы 2

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

SELECT * FROM information_schema.tables WHERE table_schema = 'you-database-name' AND table_name = 'your-table-name';

Моя проблема не в синтаксисе mysql

Mig 21.03.2019 12:53

Вы пытались использовать этот синтаксис 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;
}

Как я уже сказал, вам следует потратить некоторое время на просмотр вопроса jhez, я сначала искал в Google и StackOverflow, я уже пробовал это!

Mig 21.03.2019 12:55

@Mig Вы нигде не упомянули о том, что действительно занимаетесь исследованиями, прежде чем публиковать этот вопрос.

Kebab Programmer 21.03.2019 13:01

@KebabProgrammer, и никто не спросил, исследовал ли я уже, прежде чем пометить как дубликат ... это было просто, чтобы заработать очки

Mig 21.03.2019 13:06

К вашему сведению, пометка вопроса как дубликата делает его таким, чтобы он помог вам найти вопрос, отдаленно близкий к вашей проблеме, а не потому, что они пытаются раздражать. Если вы провели исследование, скажите в своем вопросе, что это исследование, которое вы провели, добавьте ссылки на то, где вы были, чтобы вы могли получить наилучшую помощь, а не высмеивать людей, которым потребовалось время, чтобы ответить на ваш вопрос.

Kebab Programmer 21.03.2019 13:15

Другие вопросы по теме