ФорумПрограммированиеPHP для идиотов → Работа с БД(MySQL)

Работа с БД(MySQL)

  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2007 г. 19:07

    Наверное даже тут этот вопрос не уместен=((
    Можно ли в пхп сценарии создавать самому таблицы в БД(или это делается только в командой строке(ну или myphpadmin если я не ошибаюсь))! Не отказался бы от человеческой документации по работе с MySQL из пхп..
    А что именно сейчас так это: Как записать в созданную таблицу данные(ну т.е. новую строку). Добавление сообщений допустим…
    1. Таблица notes (список записей):
    id - primary key
    user_id - пользователь
    create_time - дата создания
    public - доступно всем/личная
    title - заголовок
    body - тело сообщения

    вот такие данные из формы надо передать…
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 28 сентября 2007 г. 19:33, спустя 25 минут 54 секунды

    CREATE TABLE название таблицы на латинском(

    );

    А что нет доступа к панели phpMyAdmin?

    Мне в свое время помогла эта статья по Mysql

    зы…и гугл :)
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 28 сентября 2007 г. 19:48, спустя 14 минут 37 секунд

    В общем, читай статьи, юзай поиск, но главное осознать одну вещь: твой скрипт - такой же клиент сервера БД как и phpmyadmin, ничуть не хуже. И может выполнять SQL запросы, в т.ч. и на создание таблиц. А ограничение на те или иные виды запросов, зависят не от типа клиента (твой скрипт, phpmyadmin, клиент командной строки, gui-клиент), а от тех прав которые настроены в базе данных для пользователя от имени которого клиент соединяется с сервером.
  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2007 г. 19:57, спустя 8 минут 41 секунду

    2AlexB, спасибо за разъеснение…в принципе для моих запросов пока всё освоено, но хочу лишний раз убедиться

    Создал таблицу, написал первую строку
    (mysql_query("INSERT INTO test_zero VALUES (1, 'Заголовок статьи',
    'Текст статьи')", $msconnect);

    Далее добавление строк производим через эту же команду?

    И разъесните плиз работу
    mysql_query("UPDATE test_zero SET(num='2', title='Заголовок 2') 
    WHERE num=1", $msconnect);


    Что,чем, на что меняется? а то не очень ясно всё=(((
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 28 сентября 2007 г. 20:20, спустя 23 минуты 33 секунды

    Допустим создадим таблицу - test_zero

    Таблица будет состоять из ID(одна из выжных составляющих каждой таблицы),title,text

    Составим sql запрос к БД

    CREATE TABLE test_zero(
    id INT(11) NOT NULL AUTO_INCREMENT,
    title text,
    text text,
    PRIMARY KEY(`id`)
    );

    INT - один из нескольких типов для хранения целочисленных данных
    NOT NULL - указывает,что поле нельзя оставлять пустым
    AUTO_INCREMENT - поле ID автоматически заполняется путем увеличения значения из предыдущей строки

    PRIMARY KEY - один из важных параметров…

    Как загонять в таблицу данные?

    INSERT INTO `test_zero` ( `id` , `title` , `text` )
    VALUES (
    '', 'Заголовок', 'Текст'
    );


    Как редактировать?

    UPDATE `test_zero` SET `title` = 'Заголовок 2',
    `text` = 'Текст 2' WHERE `id` =1 LIMIT 1 ;


    Удалять?

    DELETE FROM `test_zero` WHERE `id` = 1

  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2007 г. 20:31, спустя 10 минут 24 секунды

    2Pasha,хмм… т.е. в пхп через query можно с скобках написать то же самое что и через командную строку? т.е. к твоему запросу надо добавить

    mysql_query("CREATE TABLE test_zero(
    id INT(11) NOT NULL AUTO_INCREMENT,
    title text,
    text text,
    PRIMARY KEY(`id`)
    )",$mscon); // $mscon - конект к базе


    И в бд появиться такая таблица?

    а INT(11) не даст id вырасти за 11 знаков?
  • pasha

    Сообщения: 1048 Репутация: N Группа: Адекваты

    Spritz 28 сентября 2007 г. 20:36, спустя 5 минут 6 секунд

    /*Соединение с базой данных…*/
    $sql = 'INSERT INTO `test_zero` (`id`, `title`, `text`) VALUES ('''', ''Заголовок'', ''Текст'')';
    $result = mysql_query($sql,$connect);

    mysql_free_result($result); //Освобождаем всю память,связанную с результирующим набором
    mysql_close($connect); //Закрыли подключение
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz 28 сентября 2007 г. 20:43, спустя 7 минут 18 секунд


    2Pasha,хмм… т.е. в пхп через query можно с скобках написать то же самое что и через командную строку?
    И в бд появиться такая таблица?


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

    Обычно структуру базы проектируют заранее, можно для этого воспользоваться специальными средствами (я предпочитаю Power Designer). Сгенеренный этими средставми скрипт (в нем все CREATE и будут) выполняется один раз (например через phpmyadmin), а уж твоему ПХП-скрипту остается только добавлять/извлекать данные в готовые таблицы.
  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 28 сентября 2007 г. 20:47, спустя 4 минуты 12 секунд

    2AlexB,Pasha, спасибо вроде теперь всё ясно остались мелкие вопросы.. которые думаю сам додумаю… ещё раз спасибо!
  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 29 сентября 2007 г. 8:54, спустя 12 часов 7 минут 16 секунд

    Не могу найти ничего подходящего, подскажите как реализовать следующее:
    Необходимо чекбокс передать в БД… Но для меня это двойнная проблема:Как вывести данные из чекбокса и что они будут из себя представлять-булевскую,текст,цифру? Затем есть ли в мускле тип для переменной именно того типа которая выводится из чекбокса… Просто необходимо сделать проверку на наличие public(опубликовать для всех или нет) а данные из формы пишу в БД
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 29 сентября 2007 г. 12:31, спустя 3 часа 36 минут 37 секунд

    в mysql храни поле типа binary, которое может принимать значение 0 и 1

    чекбокс если не отмечен, то вобще не передается, а если отмечен, то прийдёт как $_POST['checkbox'] = 'on'; (ну или гет…)
    все умрут, а я изумруд
  • Z-MODe

    Сообщения: 199 Репутация: N Группа: Кто попало

    Spritz 29 сентября 2007 г. 14:01, спустя 1 час 29 минут 42 секунды

    хмм… тогда в базу мне надо его через if !empty писать надо???
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz 29 сентября 2007 г. 16:11, спустя 2 часа 9 минут 55 секунд

    ага


    $checkbox = (isset($_POST['checkbox']) && $_POST['checkbox']=='on') ? 1 : 0;

    а потом пихаем в базу
    все умрут, а я изумруд

Пожалуйста, авторизуйтесь, чтобы написать комментарий!