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

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

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

    DeMoN_2009 Member

    Joined:
    1 Sep 2009
    Messages:
    12
    Likes Received:
    6
    Reputations:
    -6
    да.... можете кто сделать... необходим запрос к бд взять значение, потом обновление его в бд))
    и... sql сделайте)))) я долго буду мучаться сам...
     
  2. DeMoN_2009

    DeMoN_2009 Member

    Joined:
    1 Sep 2009
    Messages:
    12
    Likes Received:
    6
    Reputations:
    -6
    хм...
    $query = mysql_query("SELECT 'id' FROM 'qwerty' WHERE 'id' LIMIT 0,1");
    $stat = mysql_result($query, "id");

    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in
     
  3. DeMoN_2009

    DeMoN_2009 Member

    Joined:
    1 Sep 2009
    Messages:
    12
    Likes Received:
    6
    Reputations:
    -6
    Структура таблицы `qwerty`
    --

    CREATE TABLE `qwerty` (
    `id` int(100) NOT NULL default '100',
    PRIMARY KEY (`id`),
    KEY `id` (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

    --
    -- Дамп данных таблицы `qwerty`
    --

    INSERT INTO `qwerty` VALUES (23);
    INSERT INTO `qwerty` VALUES (30);
    INSERT INTO `qwerty` VALUES (36);
    INSERT INTO `qwerty` VALUES (48);
    INSERT INTO `qwerty` VALUES (50);
    INSERT INTO `qwerty` VALUES (64);
    INSERT INTO `qwerty` VALUES (455);
     
  4. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,251
    Likes Received:
    1,149
    Reputations:
    886
    Попробуй так

    $query = mysql_query("SELECT 'id' FROM 'qwerty' WHERE 'id'='{$id}' LIMIT 0,1") or die (mysql_error());
    while ( $result=mysql_fetch_assoc($query))
    {
    echo "<br>";
    var_dump($result);
    echo "<br>";
    }
     
    _________________________
  5. DeMoN_2009

    DeMoN_2009 Member

    Joined:
    1 Sep 2009
    Messages:
    12
    Likes Received:
    6
    Reputations:
    -6
    Konqi
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''qwerty' WHERE 'id'='' LIMIT 1' at line 1
     
  6. Failure

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

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    не пробовал почитать на mysql.com вместо того что бы колупаться? =\
    PHP:
    <?php
    ......
    $query mysql_query("SELECT id FROM `qwerty` WHERE id='{номер}' LIMIT 0,1");
    while(
    $row mysql_fetch_assoc($query)) {
            echo 
    $row['id'];
    }
    .......
    ?>
     
  7. DeMoN_2009

    DeMoN_2009 Member

    Joined:
    1 Sep 2009
    Messages:
    12
    Likes Received:
    6
    Reputations:
    -6
    мое нифига не работает)
     
  8. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    можно ли так делать?:

    PHP:
    $fio "Иванов Иван Иванович";
    $result3 mysql_query ("INSERT INTO client (fio) VALUES ('$fio')");
     
    // внесли в таблицу ФИО, там ID автоматом сгенерировался. и далее так
    $result2 mysql_query("SELECT * FROM client WHERE fio='$fio'",$db);
    так делать можно или нет?
    мне надо сразу внести ФИО и вывести его ID
     
  9. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    если поле id есть в таблице и оно auto_increment, то с id все будет ок...
    только не забывайте про защиту от sql injection
     
  10. namak

    namak Member

    Joined:
    29 Jan 2009
    Messages:
    66
    Likes Received:
    8
    Reputations:
    0
    id явлся auto_increment
    будем тестить значит

    а как защититься от иньекций?
     
  11. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    PHP:
    $fio mysql_real_escape_string("Иванов Иван Иванович");
     
    1 person likes this.
  12. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    mysql_query("UPDATE `puppy_listings` SET `time`= '".time()."', `uptime` = '".time()."', `auto_refresh` = `auto_refresh` - 1 WHERE `auto_refresh` != '0' AND `chas_refresh` = '".date('Hi')."'");

    Как запрос дополнить так, что бы обновление полей `time`='".time()."', `uptime` = '".time()."' было не только при условии `auto_refresh` != '0' AND `chas_refresh` = '".date('Hi')."'", но и при обязтельном условии `state` != 'closed' ?
     
    #1072 Architek86, 4 Apr 2010
    Last edited: 4 Apr 2010
  13. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    WHERE `auto_refresh` != '0' AND `chas_refresh` = '".date('Hi')."' AND `state` != 'closed'
     
  14. Architek86

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

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    phpdreamer, а ничего, что обновление поля `auto_refresh` = `auto_refresh` - 1 должно происходить вне зависимости от `state` != 'closed' ?

    Нашёл решение, вот оно:
    UPDATE puppy_listings
    SET `time`= if(state != 'closed', '".time()."', `time`),
    uptime = if(state != 'closed', '".time()."', uptime),
    auto_refresh = auto_refresh - 1
    WHERE auto_refresh != '0' AND chas_refresh = '".date('Hi')."'
     
  15. ^_WhitE_DeMoN_^

    Joined:
    1 Mar 2009
    Messages:
    101
    Likes Received:
    10
    Reputations:
    0
    Вопрос

    Юзаю Mihalism Multi Forum Host + phpBB 3.0.7-PL1, пытаюсь передать базе (MySQL, COLLATE=utf8_bin) данныe на кириллице, но как не крути (енкодинг базы и файлов) - всегда вылазят йероглифы :mad:

    Подозирою что виноваты скрипты работы с базой...
    Но знаний по MySQL не хватает.

    database.php:
    PHP:
    <?php

        
    class mfhclass_mysql_driver
        
    {
            function 
    connect($host "localhost"$username$password$database$new_link NULL)
            {
                global 
    $mfhclass;
                
    $connection_id mysql_connect($host$username$passwordtrue);
                
                if (
    is_resource($connection_id) == false) {
                    
    $this->error();
                } else {
                    if (
    mysql_select_db($database$connection_id) == false) {
                        
    $this->error();
                    } else {
                        if (
    is_resource($this->root_connection) == false) {
                            
    $this->root_connection $connection_id;
                        } else {
                            if (
    $mfhclass->funcs->is_null($new_link) == false) {
                                if (
    is_array($this->alt_connections) == true) {
                                    
    $this->alt_connections = array();
                                }
                                
    $this->alt_connections[$new_link] = $connection_id;
                            }
                        }
                    }
                }
                
                return 
    $connection_id;
            }

            function 
    close()
            {
                if (
    is_resource($this->root_connection) == true) {
                    
    mysql_close($this->root_connection);
                }
                
                if (
    is_array($this->alt_connections) == true) {
                    foreach (
    $this->alt_connections as $id => $connection) {
                        
    mysql_close($this->alt_connections[$id]);
                    }
                }
            }
                
            function 
    set_database_connection($database_id 1) {
                global 
    $mfhclass;
                if (
    $database_id != && $mfhclass->funcs->is_null($database_id) == false) {
                    
    $database_info $this->fetch_array($this->query("SELECT * FROM `mfh_forum_databases` WHERE `database_id` = '{$database_id}';"));
                    
    $this->connect($database_info['sql_host'], $database_info['sql_username'], $database_info['sql_password'], $database_info['sql_database'], $database_info['database_id']);
                }
            }

            function 
    query($query$connection_id NULL)
            {
                global 
    $mfhclass;
                if (
    is_resource($this->root_connection) == false) {
                    
    $this->connect($mfhclass->info->config['sql_host'], $mfhclass->info->config['sql_username'], $mfhclass->info->config['sql_password'], $mfhclass->info->config['sql_database']);
                }
                
                
    $query str_replace("<# QUERY_LIMIT #>", ((($mfhclass->info->current_page $mfhclass->info->config['max_results']) - $mfhclass->info->config['max_results']).", {$mfhclass->info->config['max_results']}"), $query);
                if (
    $mfhclass->info->config['sql_tbl_prefix'] != "mmh_" && $mfhclass->funcs->is_null($mfhclass->info->config['sql_tbl_prefix']) == false){
                    
    $query preg_replace("/mmh_(\S+?)([\s\.,]|$)/", ($mfhclass->info->config['sql_tbl_prefix']."\\1\\2"), $query);
                }
                
                if (
    $mfhclass->funcs->is_null($connection_id) == false && $connection_id != 1) {
                    
    $this->set_database_connection($connection_id);
                    if (
    is_resource($this->alt_connections[$connection_id]) == false) {
                        
    $this->error($query"Unknown alternate connection id: {$connection_id}");
                    }
                }
                
                
    $this->query_result mysql_query($query, (($mfhclass->funcs->is_null($connection_id) == false && $connection_id != 1) ? $this->alt_connections[$connection_id] : $this->root_connection));

                if (
    $this->query_result == false) {
                    
    $this->error($query);
                } else {
                    return 
    $this->query_result;
                }
            }

            function 
    total_rows($query_id)
            {
                return 
    mysql_num_rows($query_id);
            }

            function 
    fetch_array($query_id$result_type MYSQL_ASSOC)
            {
                return 
    mysql_fetch_array($query_id$result_type);
            }

            function 
    error_number()
            {
                global 
    $mfhclass;
                return ((
    $mfhclass->funcs->is_null(mysql_error()) == false) ? mysql_errno() : "Unknown Error Number");
            }

            function 
    error($query "No Query Executed"$custom_error NULL)
            {
                global 
    $mfhclass;
                
    $error_message = (($mfhclass->funcs->is_null($custom_error) == false) ? $custom_error mysql_error());
                
    $error_html "\t\t\t<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">
                <html>
                    <head>
                        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />
                        <title>MySQL Error</title>
                        <style type=\"text/css\">
                                * { font-size: 100%; margin: 0; padding: 0; }
                            body { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 75%; margin: 10px; background: #FFFFFF; color: #000000; }
                            a:link, a:visited { text-decoration: none; color: #005fa9; background-color: transparent; }
                            a:active, a:hover { text-decoration: underline; }                        
                            textarea { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; border: 1px dashed #000000; background: #FFFFFF; padding: 5px; background: #f4f4f4; }
                        </style>
                    </head>
                    <body>
                        <p>
                            <b>MySQL Driver Error</b>
                            <br /><br />
                            A MySQL error has occurred. 
                            Please copy the output shown below and email it immediately to <a href=\"mailto:
    {$mfhclass->input->server_vars['server_admin']}\">{$mfhclass->input->server_vars['server_admin']}</a>.
                            <br /><br />
                            <textarea readonly=\"readonly\" rows=\"15\" cols=\"40\" style=\"width:500px;\">Time Encountered: "
    .date("F j, Y, g:i:s a")."\nIP Address: {$mfhclass->input->server_vars['remote_addr']}\rError: {$error_message}\nError Number: ".$this->error_number()."\nQuery Executed: {$query}</textarea>
                        </p>        
                    </body>
                </html>"
    ;
                exit(
    $error_html);
                return;
            }
        }

    ?>
    и часть от install_queries.php (импортируемые данные в ДБ):

    PHP:
    <?php
        
    ...
        
        
    $mfhclass->db->install_queries[] = "DROP TABLE IF EXISTS `{$mfhclass->input->post_vars['access_name']}_acl_groups`;";

    ...

        
    $mfhclass->db->install_queries[] = "CREATE TABLE `{$mfhclass->input->post_vars['access_name']}_acl_groups` (
          `group_id` mediumint(8) unsigned NOT NULL default '0',
          `forum_id` mediumint(8) unsigned NOT NULL default '0',
          `auth_option_id` mediumint(8) unsigned NOT NULL default '0',
          `auth_role_id` mediumint(8) unsigned NOT NULL default '0',
          `auth_setting` tinyint(2) NOT NULL default '0',
          KEY `group_id` (`group_id`),
          KEY `auth_opt_id` (`auth_option_id`),
          KEY `auth_role_id` (`auth_role_id`)
        ) CHARACTER SET `utf8` COLLATE `utf8_bin`
          ENGINE=MyISAM ;"
    ;

        
    $mfhclass->db->install_queries[] = "INSERT INTO `{$mfhclass->input->post_vars['access_name']}_acl_groups` (`group_id`, `forum_id`, `auth_option_id`, `auth_role_id`, `auth_setting`) VALUES (1, 0, 85, 0, 1);";

    ...

    ?>
    Если в VALUES есть кириллица - она записывается йероглифами...

    Спасибо что прочли до конца =) Сейчас - ПОМОГИТЕ !
     
  16. ZnikiR

    ZnikiR Member

    Joined:
    14 Jan 2009
    Messages:
    117
    Likes Received:
    21
    Reputations:
    -5
    Вопрос как вывести пол users из базы использую left( right) join
    Code:
    таблица user
    +------+---------------+---------+
    | id   |   users   |  gender   |
    +----+---------------+-----------+
    |  1   | Lesha       |     1     |
    |  2   | Pavel       |     1     |
    |  3   | Masha       |     2     |
    |  4   | Kolya       |     1     |
    +------+-------------+-----------+
    
    Code:
    таблица gender
    +----+--------------+
    | id | user_gend    |
    +----+--------------+
    |  1 | мужик        | 
    |  2 | девка        |
    +----+--------------+
    
    PHP:
    SELECT users user_gend FROM user LEFT JOIN gender ON
    user
    .gender gender.id

    ^^ так !!!
    спасибо разобрался!

    +
    Добавлено

    А как сделать так,чтобы скрипт сначала выбирал имя,а только потом уже вставлял пол?
    То есть как объединить
    Выборка из user_name затем уже left join
    Code:
    1)SELECT gender From user WHERE users = "Марина" 
    
    2)SELECT users , user_gend FROM user LEFT JOIN gender ON
    user.gender = gender.id
    
    Ответ SELECT users , user_gend FROM user LEFT JOIN gender ON
    user.gender = gender.id WHERE user.users = "Марина"
    
    А вообще смылс это имеет?
     
    #1076 ZnikiR, 8 Apr 2010
    Last edited: 8 Apr 2010
  17. Buffalon

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

    Joined:
    22 Mar 2008
    Messages:
    241
    Likes Received:
    34
    Reputations:
    8
    Что делать
    phpMyAdmin попытался соединиться с сервером MySQL, но сервер отверг соединение. Проверьте имя хоста, пользователя и пароль в config.inc.php.
     
  18. InfectedM

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

    Joined:
    4 Nov 2007
    Messages:
    155
    Likes Received:
    12
    Reputations:
    0
    подскажите плз как вывести на экран последнюю запись столбца таблицы ?
     
  19. .:[melkiy]:.

    .:[melkiy]:. Elder - Старейшина

    Joined:
    25 Jan 2009
    Messages:
    355
    Likes Received:
    314
    Reputations:
    163
    SELECT column,column2,column3 FROM table ORDER BY id DESC LIMIT 1
     
  20. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ))
     
    1 person likes this.
Thread Status:
Not open for further replies.