Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Никак не могу заставить функцию создать таблицу (WP)
 
 автор: naikom   (17.12.2010 в 21:33)   письмо автору
 
 

Работаю с Wordpress.

Значит, есть функция

global $wpdb;
$ppbv_tablename = $wpdb->prefix.'popular_by_views';
function ppbv_create_table(){
     $ppbv_table = $wpdb->get_results("SHOW TABLES LIKE '{$ppbv_tablename}'" , ARRAY_N);
    if(empty($ppbv_table)){
        $create_table_sql = "CREATE TABLE {$ppbv_tablename} (
            id BIGINT(50) NOT NULL AUTO_INCREMENT,
            post_id VARCHAR(255) NOT NULL,
            views BIGINT(50) NOT NULL,
            PRIMARY KEY (id),
            UNIQUE (id)
        )";
        $wpdb->query($create_table_sql);
        $wpdb->flush();
    }
}  
add_action('init', 'ppbv_create_table');


она должна проверять наличие таблицы, и если её нет, то создавать.
НО почему-то она не работает..
Что я не так прописываю..

ПС функция стандартная, можете опробовать её - просто вставив код в functions.php - По задумке, должна появиться таблица wp_popular_by_views

Буду очень признателен за помощь.. ибо всю голову сломал..

  Ответить  
 
 автор: Trianon   (17.12.2010 в 21:44)   письмо автору
 
   для: naikom   (17.12.2010 в 21:33)
 

Окончательные тексты запросов как выглядят?
Не знаю как там в wp, но с точки зрения формального кода php я вижу неопределенные переменные.

BIGINT(50) порвало :)

  Ответить  
 
 автор: naikom   (17.12.2010 в 22:22)   письмо автору
 
   для: Trianon   (17.12.2010 в 21:44)
 

что значит неопределённые переменные?
а что такого в BIGINT(50)?

  Ответить  
 
 автор: Trianon   (17.12.2010 в 23:28)   письмо автору
 
   для: naikom   (17.12.2010 в 22:22)
 

неопределенные переменные - переменные, которым не присвоено никакого значения перед их использованием.
например в функции
function ppbv_create_table(){
     $ppbv_table = $wpdb->get_results("SHOW TABLES LIKE '{$ppbv_tablename}'" , ARRAY_N);
    if(empty($ppbv_table)){
        $create_table_sql = "CREATE TABLE {$ppbv_tablename} (
            id BIGINT(50) NOT NULL AUTO_INCREMENT,
            post_id VARCHAR(255) NOT NULL,
            views BIGINT(50) NOT NULL,
            PRIMARY KEY (id),
            UNIQUE (id)
        )";
        $wpdb->query($create_table_sql);
        $wpdb->flush();
    }
}  

я вижу две таких переменных - $ppbv_tablename и $wpdb
это локальные переменные данной функции
это не её формальные параметры - на входе не передаются
и значения их нигде не заданы.
им не присваивается значений


BIGINT - 64-битовое целое. Хранит около 19 десятичных цифр. Никак не 50.

  Ответить  
 
 автор: naikom   (17.12.2010 в 23:46)   письмо автору
 
   для: Trianon   (17.12.2010 в 23:28)
 

$ppbv_tablename и $wpdb по умолчанию движком задаются

  Ответить  
 
 автор: Trianon   (17.12.2010 в 23:49)   письмо автору
 
   для: naikom   (17.12.2010 в 23:46)
 

Я поэтому и написал, про wp ничего не знаю.
НО если это код на php - нету и не может быть внутри тела функции никаких умолчаний.
Если вход некоего препроцессора - может быть всё что угодно.
Но полагаясь на свой опыт скажу, что препроцессорный код так не строят.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования