Створити таблицю з динамічним ім'ям - stack overflow російською

  1. З приводу створення таблиць в MySQL рекомендую почитати документацію.
  2. Перевіряти чи існує таблиця як у вас в коді - неправильно. Якщо таблиці не існує, то спроба звернутися до неї запитом викличе помилку і виконання перерветься. Таблицю можна створити із зазначенням IF NOT EXISTS. Вона буде створена тільки в тому випадку якщо однойменної таблиці в БД не існує.
  3. Змінну з назвою таблиці дуже бажано фільтрувати на предмет зайвих символів. Частково, за допомогою mysql_real_escape_string (). частково - своїм фільтром (назва - це не рядок).
  4. Створювати таблицю з ім'ям одержуваних ззовні - потенційна дірка в захисті.
  5. І, нарешті, створювати таблиці в runtime - поганий тон. За винятком тих випадків, коли розробляються скрипти автоматичної інсталяції. Але, звичайно, такий скрипт відпрацьовує один раз і після цього знищується.

Якщо я правильно зрозумів структуру створюваної таблиці, то SQL-скрипт для її створення в вашому випадку виглядав би приблизно так:

Саме цю конструкцію потрібно класти в рядок і згодовувати mysql_query ().

Дякую за рекомендації! І, нарешті, створювати таблиці в runtime - поганий тон. За винятком тих випадків, коли розробляються скрипти автоматичної інсталяції. Але, звичайно, такий скрипт відпрацьовує один раз і після цього знищується. Мені просто треба зберігати інформацію про час запису на кожен день. Створювати кожен раз ці таблиці вручну якось не хочеться. А до іншого способу я не додумався. - Радик Камалов 21 Лютого '12 о 8:37

Для цього зовсім не обов'язково кожен раз створювати нову таблицю. Досить створити одну з первинних ключем по полю типу DATETIME. І писати туди кожен раз значення SQL-функції NOW () (поточна дата-час). А для SELECT-вибірки будь-якого зрізу інформації в SQL існують такі речі як умови, сортування і угрупування. - KiTE 21 Лютого '12 о 15:50

Схожі статті