Запуск MySQL Query в Wordpress приводит к исчезновению разметки HTML? - PullRequest
1 голос
/ 02 июня 2011

У нас проблема с добавлением запросов MySQL на нашу страницу. Кажется, что всякий раз, когда что-то запускается в верхней части страницы, остальные функции разметки и php, которые следуют, не отображаются / не запускаются.

Вот пример запроса, который вызывает эту проблему:

global $wpdb;

$add_query = "CREATE TABLE thetesttable
        (
           id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
           product VARCHAR(50)
        )";

$wpdb->query($add_query) or die(mysql_error());

Загрузка страницы один раз приводит к пустой странице.

Во второй раз мы видим Table 'thetesttable' already exists, что означает, что наши запросы проходят.

На странице Google Chrome нет других ошибок или чего-либо еще обнаруженного.

Что может быть причиной этой проблемы?

Большое спасибо,

Юстиан Мейер

Ответы [ 2 ]

3 голосов
/ 02 июня 2011

Проблема в том, что ваш запрос возвращает 0, который интерпретируется как ложный в вашей статистике:

$wpdb->query($add_query) or die(mysql_error());

Из ссылки wpdb класса :

Функция возвращает целое число, соответствующее количеству затронутых / выбранных строк.В случае ошибки MySQL функция вернет FALSE.(Примечание: так как 0 и FALSE могут быть возвращены, убедитесь, что вы используете правильный оператор сравнения: равенство == и идентичность ===).

То, что вы должны сделать, примерно так:

$result = $wpdb->query($add_query);
if ($result === false)
{
  die('Could not run query');
}

Редактировать: Кстати, также обратите внимание, что вы не должны использовать mysql_error(), как вы используете при использовании класса wpdb.Чтобы получить последнюю ошибку, вы можете использовать $wpdb->print_error();.

0 голосов
/ 02 июня 2011

После всех дополнительных комментариев, чем я предлагаю добавить дополнительный запрос, который

SHOW TABLES LIKE 'thetesttable';

Запустите запрос CREATE TABLE, если нет результатов выше одного, и пропустите его, если таблица существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...