За последние 24 часа нас посетили 72572 программиста и 1650 роботов. Сейчас ищут 876 программистов ...

Пример русской базы данных на SQL

Тема в разделе "MySQL", создана пользователем Epsilon, 9 ноя 2012.

  1. Epsilon

    Epsilon Активный пользователь

    С нами с:
    9 ноя 2012
    Сообщения:
    11
    Симпатии:
    0
    Всем привет.
    Намедни одолел SQL и его непереносимость русского языка.
    Зачем мне надо было так извращаться - другой вопрос :)

    Кому надо выкладываю образчик кода.

    Код (Text):
    1.  
    2.     //$Parameters - массив UTF-8 строк полученных как параметры скрипта
    3.     $Parameters = explode("\n", fread(fopen("php://input", "r"), 1000) );
    4.     $conn = mysql_connect("localhost", "root");
    5.  
    6.     //Если кому нужно удалить старую базу данных
    7.     $sql = "DROP DATABASE `База данных`";
    8.     mysql_query($sql, $conn);
    9.  
    10.  
    11.  
    12.  
    13.  
    14.  
    15.     //Создаём базу данных с русским названием
    16.     $sql = "CREATE DATABASE `База данных`";
    17.     if (mysql_query($sql, $conn) == TRUE){echo "Database create -- TRUE\n";}else{echo "Database create -- FALSE\n";}
    18.  
    19.     //Подключаемся к базе данных
    20.     mysql_select_db("База данных", $conn);
    21.  
    22.     //Создаём русскоязычную таблицу
    23.     $sql = "CREATE TABLE `Аккаунты` (`Имя` TEXT, `Пароль` TEXT)";
    24.     if (mysql_query($sql, $conn) == TRUE){echo "Table create -- TRUE\n";}else{echo "Table create -- FALSE\n";}
    25.  
    26.     //Добавляем в таблицу инфу
    27.     $sql = "INSERT INTO `Аккаунты` VALUES ('$Parameters[1]', '$Parameters[2]')";
    28.     if (mysql_query($sql, $conn) == TRUE){echo "Insert current accaunt data -- TRUE\n";}else{echo "Insert current accaunt data -- FALSE\n";}
    29.  
    30.     //Извлекаем из таблицы инфу
    31.     $sql = "SELECT * FROM `Аккаунты` WHERE `Имя` = '$Parameters[1]' AND `Пароль` = '$Parameters[2]'";
    32.     $result = mysql_query($sql, $conn);
    33.     if (!$result)
    34.     {
    35.         print "Error 0";
    36.     }
    37.     else
    38.     {
    39.         print "Extract data -- Ok!";
    40.     }
    В принципе, отличие от не русской базы данных только в "экранировании" русских названий символом "тильда" (`), но главное - знать где экранировать, а где - нет.

    P.S.: Нигде описания как работать с русскоимёнными базами данных найти не смог - пришлось учиться методом тыка.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Видна рука мастера
     
  3. Epsilon

    Epsilon Активный пользователь

    С нами с:
    9 ноя 2012
    Сообщения:
    11
    Симпатии:
    0
    Примечание: этот мой код в UTF-8 не хочет работать: как только пересохранил PHP-скрипт с ANSI в UTF-8 сразу начались проблемы с подключением к созданной базе данных. Решения пока не нашёл.