1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Подключение к БД MySQL

Discussion in 'PHP' started by J.O.K.E.R., Dec 16, 2010.

  1. J.O.K.E.R. Thread starter User


    Offline
    Message Count:
    152
    Likes Received:
    27
    Чтобы выполнять запросы к базе нам необходимо к ней подключиться и выбрать таблицу . Это достаточно просто и выполняется при помощи 2 стандартных функций

    Code:
    <?php
    $link = mysql_connect("localhost", "root", "pass")
    or die("Не могу подключиться");
    print ("Соединение выполнено");
    mysql_close($link);
    ?>

    Code:
    <?php
    $link = mysql_connect("localhost", "root", "pass")
    or die("Не могу подключиться" );
    // сделать test текущей базой данных
    mysql_select_db('test', $link) or die ('Не могу выбрать БД');
    
    ?>

    Функция mysql_select_db вызывается только после функции mysql_connect. Для того чтобы подключиться и выбрать базу test, мы берем второй фрагмент кода. Этот фрагмент мы будем использовать в каждом скрипте, где необходима работа с mysql.

    Запись в БД

    Чтобы создать запись в БД необходимо сформировать запрос, который будет вставлять значения в таблицу. Создаем новый файл в php expert editor‘е, вставляем фрагмент кода приведенный выше, который отвечает за подключение к БД и выбора нужной таблицы.

    Code:
    <?php
    $link = mysql_connect("localhost", "root", "pass")
    or die("Не могу подключиться" ); // сделать test текущей базой данных
    mysql_select_db('test', $link) or die ('Не могу выбрать БД');
    
    Далее необходимо создать запрос. Это достаточно просто сделать, смотрите далее


    Давайте разберем то, что мы присвоили переменной $query. Транскрипция запроса выглядит следующим образом:

    Обратите внимание на первое значение в скобках после VALUES. Мы указали тип переменной NULL, это значит что в это поле ничего записываться не будет. Вот так просто мы разобрали с вами запрос, что делать дальше?!

    Далее есть функция, которая отвечает за выполнение запроса, и возвращает результат. Это функция

    Code:
    $result = mysql_query($query);
    
    if($result) {echo "Даные внесены в базу данных";} else {echo "Ошибка, данные не были внесены в БД";}
    
    mysql_close($link);
    
    
    ?>
    
    В нашем случае переменная $result будет содержать результат данного запроса. В конце мы добавим простое условие, которое укажет нам об успешном или неуспешном выполнении запроса.
    Итог можете посмотреть при помощи PhpMyAdmin, перейдя в таблицу notebook и нажав вкладку Обзор


    Конец 1ой части - (в пост влезает всего 5000 символов) :(
  2. J.O.K.E.R. Thread starter User


    Offline
    Message Count:
    152
    Likes Received:
    27
    Чтение БД

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

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

    Code:
    $query = "SELECT * FROM notebook";
    Здесь все достаточно просто:

    Code:
    $result=mysql_query($query);
    
    while($r=mysql_fetch_array($result)) {
    
    echo "$r[model] - $r[price]<br/>";
    
    }
    mysql_close($link);
    ?>

    Используем функцию mysql_fetch_array чтобы получить массив значений, ключами которого являются имена столбцов (model и price).

    Давайте теперь добавим условие, например вывести ноутбуки, цена которых превышает 30 000. Сделать это можно двумя способами. Можно просто внутри цикла while вставить условие

    Code:
    if($r[price] >=30000) {echo "$r[model] - $r[price]";}
    Такое условие будет обрабатывать уже полученные данные из базы, но можно пойти другим путем – создать условие при запросе к базе.

    Code:
    $query = "SELECT * FROM notebook WHERE price>30000";
    
    Транскрипция к запросу
    
    $query = «ВЫБРАТЬ ВСЁ ИЗ notebook ГДЕ price>30000″;
    
    $query = "SELECT * FROM notebook WHERE price>30000";
    
    $result=mysql_query($query);
    
    while($r=mysql_fetch_array($result)) {
    
    echo "$r[model] - $r[price]";
    
    }
    mysql_close($link);
    ?>

    Результатом выполнения этого скрипта будет вывод 2х позиций товаров, с ценой более 30 000.

    Получение количества рядов можно сделать при использовании функции mysql_num_rows.

    mysql_num_rows – Возвращает количество рядов результата запроса

    Добавим её в наш скрипт и получим к общему списку товаров их количество:

    Code:
    $query = "SELECT * FROM notebook ";
    
    $result=mysql_query($query);
    
    while($r=mysql_fetch_array($result)) {
    
    echo "$r[model] - $r[price]<br/>";
    
    }
    
    echo "_____________<br/>
    Всего позиций:".mysql_num_rows($result);
    mysql_close($link);
    ?>

    Изменение данных

    Code:
    $query = "UPDATE notebook SET price=52000 WHERE id=3";
    Code:
    $query = «ИЗМЕНИТЬ notebook УСТАНОВИТЬ price=52000 ГДЕ id=3?;
    Code:
    $result = mysql_query($query);
    
    if($result) {echo "Данные изменены";} else {echo "Ошибка, данные не были изменены";}
    
    mysql_close($link);
    
    ?>

    В итоге ценник у ноутбука Sony станет 52 000.

    Конец 2ой части!
  3. twixi007 Famous member


    Offline
    • Знаменитый
    Message Count:
    417
    Likes Received:
    77
    My version of SE:
    4.6.0
    Четко и ясно красавчик!
  4. shuranov Novice member


    Offline
    Message Count:
    6
    Likes Received:
    0
    Лучше бы осветили Propel нормально или подобную ORM. А такого рода маны лежат по всему инету, зачем лишний раз повторять?
  5. SpartakuS User


    Offline
    • Знаменитый
    Message Count:
    797
    Likes Received:
    82
    Ты куку штоль. Тут что такое орм знаем ты да я, дпюа мы с тобой. Ну еше ред ребит и разраб оксвала.
  6. Red Rabbit Tough member


    Offline
    Message Count:
    898
    Likes Received:
    193
    А я вот вообще не понимаю таких статей. Их же сотни, тысячи уже. Лучше что-нибудь оригинальное, полезное. Например, нет нормальных трактовок о тонкостях продвижения и маркетинговых уловках при создании соц.проекта. Вот это действительно полезно...но, видится мне что для большинства публики здесь это ещё более загадочно нежели орм. :)
  7. shuranov Novice member


    Offline
    Message Count:
    6
    Likes Received:
    0
    Ну звыняйте, но статья, действительно, не нужна - этого добра в сети полно. Если не ORM, то в крайнем случае, с привязкой к какому-то социальному движку, как через его API вызвать подключение к БД, это было бы более полезно юзерам. Ну, по моему скромному мнению, конечно же.
  8. SpartakuS User


    Offline
    • Знаменитый
    Message Count:
    797
    Likes Received:
    82
    shuranov, да я согласен с тобой)))
    PS По крону повышение в группу. Вроде повышен.

Share This Page

All rights reserved SocEngine.ru ©