[sql] Вопросы по БД

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. NuR

    NuR Elder - Старейшина

    Joined:
    11 Dec 2005
    Messages:
    85
    Likes Received:
    58
    Reputations:
    -2
    но по идее у тебя должно было сразу сдохнуть и написать причину и не было бы "теже самые ошибки" там точняк ниче про логин пароль те не написало?
     
  2. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <?php
    $servername
    ='';     // Your MySql Server Name or IP address here
    $dbusername='';                // Login user id here
    $dbpassword='';                // Login password here
    $dbname='';     // Your database name here

    function connecttodb($servername,$dbname,$dbuser,$dbpassword)
    {
    global 
    $link;
    $link=mysql_connect ('$servername','$dbuser','$dbpassword');
    if(!
    $link){die('Could not connect to MySQL');}
    mysql_select_db('$dbname',$link) or die ('could not open db'.mysql_error());
    }

    connecttodb($servername,$dbname,$dbusername,$dbpassword);

    $query'SELECT * FROM `test1`'
    $result=mysql_query($query);
    $num mysql_num_rows($result);
    echo 
    $num;
    ?>
    но правильней делать так:

    1. Создаешь файл config.php, пишешь туда:

    PHP:
    <?php
    $servername
    ='';     // Your MySql Server Name or IP address here
    $dbusername='';                // Login user id here
    $dbpassword='';                // Login password here
    $dbname='';     // Your database name here

    function connecttodb($servername,$dbname,$dbuser,$dbpassword)
    {
    global 
    $link;
    $link=mysql_connect ('$servername','$dbuser','$dbpassword');
    if(!
    $link){die('Could not connect to MySQL');}
    mysql_select_db('$dbname',$link) or die ('could not open db'.mysql_error());
    }

    connecttodb($servername,$dbname,$dbusername,$dbpassword);
    ?>
    2. Создаешь файл для вывода информации:
    PHP:
    <?php
    require_once ('config.php'); // или - include ('config.php');
    $query'SELECT * FROM `test1`'
    $result=mysql_query($query);
    $num mysql_num_rows($result);
    echo 
    $num;
    ?>
    3. Создаешь .htaccess, пишешь туда:

    Code:
    Options -Indexes
    <Files "config.php"> 
    Order allow,deny 
    Deny from all 
    </Files>
    
     
    #322 Pashkela, 14 Nov 2008
    Last edited: 14 Nov 2008
    1 person likes this.
  3. D1mka

    D1mka Elder - Старейшина

    Joined:
    2 Jan 2008
    Messages:
    123
    Likes Received:
    14
    Reputations:
    2
    спасибо, помог первый вариант
    ты там специально пробелы поставил?) я блин пол ночи из-за них тупил)
     
  4. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    )) Нет, это тут типо защита такая или хз в общем. Не специально
     
  5. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    D1mka, их ставит сам форум
     
    1 person likes this.
  6. N19hTW0lF

    N19hTW0lF Elder - Старейшина

    Joined:
    11 Jul 2007
    Messages:
    188
    Likes Received:
    140
    Reputations:
    4
    Как поменять Кодировку уже таблицы
    как сделать поиск по бд
     
  7. vikseriq

    vikseriq Elder - Старейшина

    Joined:
    31 Jul 2008
    Messages:
    118
    Likes Received:
    44
    Reputations:
    2
    Кодировка:
    Code:
    ALTER TABLE таблица CONVERT TO CHARACTER SET charset_name;
    Поиск:
    Code:
    SELECT * FROM таблица WHERE условие
     
  8. cash$$$

    cash$$$ Banned

    Joined:
    6 Jan 2008
    Messages:
    385
    Likes Received:
    246
    Reputations:
    10
    1 Поменять кодировку уже существующей таблицы можно с помощью SQL-запросов, отправляемых из приложения, или с помощью phpMyAdmin.

    Вот пример получающего данные от клиента в кодировке CP1251 и сохраняющего их в таблицу с кодировкой UTF-8:

    Code:
    import java.io.*;
    import java.sql.*;
    import java.util.Properties;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    /*
    Для работы этого примера требуется предварительно создать таблицу с помощью следующего SQL-запроса:
    CREATE TABLE test (id INT AUTO_INCREMENT PRIMARY KEY, value VARCHAR(255)) CHARACTER SET utf8
    */
    public class DBServlet extends HttpServlet {
        
        protected void service(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
            //указываем кодировку для HTML-страницы, отправляемой клиенту
            response.setContentType("text/html; charset=windows-1251");
            //указываем кодировку для данных полученых от клиента
            request.setCharacterEncoding("CP1251"); 
            PrintWriter out = response.getWriter();
            out.println("<html>");
            out.println("<head><title>DBServlet</title></head>");
            out.println("<body>");
            out.println("<form method=\"post\" action=\"dbservlet\">");
            out.println("<input type=\"text\" name=\"t1\">");
            out.println("<input type=\"submit\">");
            out.println("</form>");
            out.println("<hr>");
            try{
               Connection connection=getDBConnection();
               Statement statement=connection.createStatement();
               if(request.getMethod().equals("POST")){
                   String t1=(request.getParameter("t1")!=null)?request.getParameter("t1").trim():"";
                   if(t1.length()>0){
                       statement.executeUpdate("INSERT INTO test ( value ) VALUES ('"+t1+"')");
                   }
               }
               ResultSet result=statement.executeQuery("SELECT id, value FROM test ORDER BY id DESC");
               out.println("<table border=\"1\">");
               out.println("<tr><th>id</th><th>value</th></tr>");
               while(result.next()){
                   out.println("<tr>");
                   out.println("<td>"+result.getString("id")+"</td>");
                   out.println("<td>"+result.getString("value")+"</td>");
                   out.println("</tr>");
               }
               out.println("</table>");
               connection.close();
            }catch(Exception e){
                log(e.toString());
            }
            out.println("</body>");
            out.println("</html>");
        }
        
        /*
        Не самый лучший метод для получения соединения с базой данных.
        Для повышения производительности при работе с базами данных  использовать
        пулы соединений.
        */
        protected Connection getDBConnection()throws Exception{
            Class.forName("com.mysql.jdbc.Driver");
            Properties properties=new Properties();
            properties.setProperty("user","логин");
            properties.setProperty("password","пароль");
            /*
              настройки указывающие о необходимости конвертировать данные из Unicode в UTF-8,
              который используется в таблице для хранения данных
            */
            properties.setProperty("useUnicode","true");
            properties.setProperty("characterEncoding","UTF-8");
            return(DriverManager.getConnection("jdbc:mysql://localhost:3306/имяБазы", properties));
        }
    }
     
    #328 cash$$$, 17 Nov 2008
    Last edited: 17 Nov 2008
  9. truelamer

    truelamer Elder - Старейшина

    Joined:
    6 Nov 2007
    Messages:
    135
    Likes Received:
    30
    Reputations:
    5
    помогите как лучше оптимизировать код чтоб часто бд не опрашивать, или как перепроектировать бд чтоб снизить нагрузку на сервак

    ситуация такова что: _http://darin-sk.kz/mysql.jpg

    для каждого пользователя выборка происходит на основании его прав доступа к информации по областям и видов деятельности и их подвидов
     
  10. Корвин

    Корвин Elder - Старейшина

    Joined:
    26 Feb 2007
    Messages:
    256
    Likes Received:
    31
    Reputations:
    3
    странная запись какаято, у тебя прям так все в базе записано? если да , то попробуй каждую область доступа сделать в отдельном поле, и как у тебя сейчас выглядит код запроса в базу, выложи тут
     
  11. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    изменить структуру таблиц, например, так. Вынести права доступа юзеров в отдельную таблицу
    Code:
    user_rights
    	id - уникальное поле
    	uid - id пользователя (связь по полю users.uid)
    	pid - id перечня (связь по полю perechen.pid)
    	vid - id из таблиц actions, classies, obl (если pid = 1, то это значение поля actions.aid, если pid = 2, то classies.cid, если pid = 3, то obl.oblid)
    
    perechen (скорее, это чисто информационная таблица, практического использования может не иметь)
    	pid - id перечня (actions = 1, classies = 2, obl = 3)
    	pname - название 
    
    тогда таблица юзерс будет такой
    Code:
    users
    	uid - id пользователя
    	ulogin - логин пользователя
                    (возможно, еще какие-то поля)
    
    Пример
    Code:
    users
    id	ulogin
    1	Bond
    ================
    user_rights
    id	uid	pid	vid
    1	1	1	13
    2	1	1	15
    3	1	1	17
    4	1	1	234
    5	1	1	45
    6	1	1	456
    7	1	1	65
    8	1	2	1
    9	1	2	23
    10	1	2	12
    11	1	2	21
    12	1	3	1
    13	1	3	10
    14	1	3	4
    15	1	3	3
    
    Расставить индексы.
    ЗЫ. С тендерами что-то я не понял. Пример такого запроса можно?
    ЗЗЫ. Таблицы actions, classies, obl останутся без изменений
     
    1 person likes this.
  12. VDShark

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    У тебя
    access - obl
    actions_access - actions
    classies_access - classies
    по сути не связаны.
    Первый и оч большой минус - не поддерживается целостность средствами базы, и ее очень легко перевести в рассогласованное состояние :)
    Второй - что бы понять куда он имеет доступ, надо получить значение, проанализировать... опять послать запрос... ужас просто=)
    Предлагаю сделать след. образом (на промереобласти - с остальными думаю разберешся сам)

    Создаем таблицу us_obl , вида

    id_user|id_obl

    где id_user ссылается на uid из таблички users, а id_obl - соответственно на oblod из таблицы obl. Первичный ключ здесь составной, из полей id_user, id_obl... в эту таблицу можно еще добавить какие нить вспомогательные данные, если нужны.
    И соответственно после этих манипуляций мы удаляем поле access из таблицы users.
    Так же следует поступить и с двумя оставшимися полями.
    Так же можно привязать каскадное удаление\обновление и тп, но б этом я судить не очень могу, так как не вникал в твою предметную область, и тебе лучше видно нужно ли здесь это :)

    Главный итог сих дйствий - увеличили надежностьбазы, и упростили обработку данных.
     
    #332 VDShark, 18 Nov 2008
    Last edited: 18 Nov 2008
    2 people like this.
  13. N19hTW0lF

    N19hTW0lF Elder - Старейшина

    Joined:
    11 Jul 2007
    Messages:
    188
    Likes Received:
    140
    Reputations:
    4
    как сделать поиск по бд не как where.../
    я хочу чтобы проверялось если такое слово или нет.если есть то показать
    по бд а не таблица
     
  14. VDShark

    VDShark Elder - Старейшина

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    http://en.wikipedia.org/wiki/Full_text_search
    Отсюда начинай плясать :)
     
  15. N19hTW0lF

    N19hTW0lF Elder - Старейшина

    Joined:
    11 Jul 2007
    Messages:
    188
    Likes Received:
    140
    Reputations:
    4
    спс за ссылку.но ща энто читать и вырубатся времини нету.поймите меня плз.
     
  16. Zyklonss

    Zyklonss New Member

    Joined:
    19 Nov 2008
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Перенос старой базы в новую на Вордпрессе

    Здравствуйте, всем!
    На сайте сделал блог на Вордпрессе. Глюканул блог, скачал свежую версию WP 262, заново установил( при установке сделал префикс ss_). Теперь есть 2 вопроса:
    1. Хочу перенести данные со старой базы в новую. В админке присутствуют старая база( с префиксом wp_) и новая база(с префиксом ss_). Как правильно мне это сделать?
    2. После таких проблем решил далее не рисковать и регулярно делать резервное копирование данных базы, что бы в случае чего сделать бэкап. Мои действия:
    2.1. Сделал резервную копию базы. А именно: выбрал название базы- экспорт-SQL(поставил галочку на "Добавить CREATE PROCEDURE / FUNCTION")- сохранил данные в блокноте.
    2.2. Пытался восстановить данные. А именно: выбрал название базы- вкладка SQL- вставил данные сохранённого файла в поле- ок. Выдаёт ошибку. В чём проблема?
    Спасибо большое всем , кто поможет!
     
  17. a1ex

    a1ex Banned

    Joined:
    11 Oct 2006
    Messages:
    517
    Likes Received:
    130
    Reputations:
    -13
    имхо префикс.
     
  18. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    2.2. конкретнее, че за ошибка?
    по базе: в бекапе возьми команды с инсертами, замени значения INSERT INTO ws_ на '... ss_' , и выполни в SQL
     
  19. Zyklonss

    Zyklonss New Member

    Joined:
    19 Nov 2008
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Если можно, поподробнее. Видете ли, я- новичёк и не много знаю по теме.
    Вы говорите о префиксе по бэкапу?
     
  20. Zyklonss

    Zyklonss New Member

    Joined:
    19 Nov 2008
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Поменял в бэкапе значения INSERT INTO wp_ на '... ss_' и выполнил SQL- ошибка:
    "Ошибка

    SQL-запрос:

    --
    -- База данных: `ourwater151`
    --
    CREATE DATABASE `ourwater151` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;


    Ответ MySQL:
    #1007 - Can't create database 'ourwater151'; database exists"



    При бэкапе без изменения префикса:
    "Ошибка

    SQL-запрос:

    --
    -- Дамп данных таблицы `ss_comments`
    --
    INSERT INTO `ss_comments` ( `comment_ID` , `comment_post_ID` , `comment_author` , `comment_author_email` , `comment_author_url` , `comment_author_IP` , `comment_date` , `comment_date_gmt` , `comment_content` , `comment_karma` , `comment_approved` , `comment_agent` , `comment_type` , `comment_parent` , `user_id` )
    VALUES ( 2, 3, 'Egorich', '[email protected]', 'http://lexicka.ru', '98.223.159.17', '2008-10-02 09:15:52', '2008-10-02 05:15:52', 'Вот это да... По моему мнению, минусы намного превосходят плюсы. Думаю, не стоит заморачиваться.', 0, '1', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Netscape/8.0.4', '', 0, 0 ) , ( 3, 3, 'Феликс', '[email protected]', 'http://aviacya.ru', '212.241.70.70', '2008-10-04 02:50:24', '2008-10-03 22:50:24', 'Если это не тайна, автор откуда родом?', 0, '1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Gecko/20060206 Songbird/0.1', '', 0, 0 ) , ( 4, 3, 'Бизнесмен', '[email protected]', 'http://www.wwnews.info/', '89.190.225.140', '2008-10-06 23:43:41', '2008-10-06 19:43:41', 'Почти так. Но если мне не изменяет память в каком то блоге писали иначе', 0, '1', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)', '', 0, 0 ) , ( 5, 3, 'kabardinka', '[email protected]', 'http://kabardinka.name', '91.76.219.87', '2008-10-17 12:58:30', '2008-10-17 08:58:30', 'здравствуйте!\r\nнадеюсь что у вас сайт будет пополнять и будет интересным! всего доброго!\r\nА дизайн хороший, располагает пользователя!', 0, '1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 WebMoney Advisor', '', 0, 0 ) , ( 6, 3, 'admin', '[email protected]', 'http://', '93.84.17.51', '2008-10-19 13:48:01', '2008-10-19 09:48:01', 'Спасибо за проявленный интерес к сайту и блогу. Принимаются любые предложения и пожелания. Я благодарен за позитивный отзыв kabardinka и очень рад ругательным сообщениям, так как это стимулирует и заставляет задуматься о том, что же не так. Автор из Беларуси, г.Пинск. Всем успеха и отличного здоровья!', 0, '1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3', '', 0, 1 ) , ( 23, 3, 'Цунарэф', '[email protected]', '', '93.84.240.206', '2008-11-01 04:10:51', '2008-11-01 00:10:51', 'Здравствуйте!\r\nНадеюсь, что сайт будет и дальше интересным,но займитесь делом и поработайте над сайтом в стиле хорошей музыки, а этот можно держать параллельно. Народ требует Вашего возвращения на своё место.\r\nС уважением Ю.Шатунов.', 0, '1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3', '', 0, 0 ) , ( 24, 3, 'admin', '[email protected]', 'http://', '93.84.18.239', '2008-11-01 20:39:51', '2008-11-01 16:39:51', 'Спасибо, Цунареф, за комментарий и проявленный интерес к сайту и блогу. Я знаю, кто пишет под ником\r\nЦунарефы и знаю, что речь идёт по поводу сайта http://zyklonss.pochta.ru/Zyklonss/index.html.\r\nДа, сайт посвящённый тяжёлой музыке я временно забросил, так как все силы на данный момент отдаю этому сайту. Да и поддержки со стороны некоторых участников того проекта я не наблюдаю. В частности это касается музыкантов группы Ultrakain из Дзержинска в Беларуси.\r\nА Вам, Цунареф(Ю.Шатунов), предлагаю вопросы, связанные с тем сайтом, задавать в ICQ(423902398), а здесь общаться по вопросам этого сайта и блога. Не забывайте отписаться. Успеха Вам!\r\nС уважением, Сергей.', 0, '1', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3', '', 0, 1 ) ;


    Ответ MySQL:
    #1062 - Duplicate entry '2' for key 1
    "
     
    #340 Zyklonss, 20 Nov 2008
    Last edited: 20 Nov 2008
Thread Status:
Not open for further replies.