Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
7 / 7 / 2
Регистрация: 29.01.2011
Сообщений: 110

Запрос к бд MySQL

23.10.2014, 10:39. Показов 1871. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть некий запрос на добавление в бд
PHP
1
$query = "INSERT INTO device SET  name='".$name."', ip_addr='".$ip_addr."', mac_addr='".$mac_addr."', id_type='".$id_type."', id_role='".$id_role."', date=CURRENT_TIMESTAMP, id_user='".$GLOBALS["user"]['id']."' ";
При каждом таком запросе в таблице device будет запись с новым id
MySQL
1
2
3
+-----+----------------------+---------------+-------------------+---------+---------+---------------------+---------------------+---------+-------------+---------+
| id  | name                 | ip_addr       | mac_addr          | id_type | id_role | date                | upd_date            | id_user | upd_id_user | id_addr |                                       
+-----+----------------------+---------------+-------------------+---------+---------+---------------------+---------------------+---------+-------------+---------+
Следом за этим запросом выполняется второй запрос к бд
PHP
1
$query_i = "INSERT INTO `ports` (`port_id`, `parent_id`, `status`, `desc`, `speed`) VALUES (".$i.", '185', '0', 'NULL', '100M')";
parent_id должен быть такой как только что добавленный id в первом запросе. Подскажите как это можно реализовать.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.10.2014, 10:39
Ответы с готовыми решениями:

Запрос к MySQL. Через WorkBench запрос выполняется, а через клиента - нет
Добрый день! Помогите с запросом! string CommandText = "SELECT * FROM sensors WHERE sensors.VehID=1001317"; ...

Запрос в бд MySQL на C++
Здрасте всем. Помогите кто может - возникла следующая проблема: Есть рабочий код C++ для соединения с базой MySQL: #include...

MySQL запрос
Всем доброго вечера (хотя уже ночь) :) Помогите, пожалуйста, составить mysql запрос. Есть таблицы pharms(`id`), field_values(`id`,...

21
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
23.10.2014, 11:31
Цитата Сообщение от micro-chipset Посмотреть сообщение
parent_id должен быть такой как только что добавленный id в первом запросе. Подскажите как это можно реализовать.
PHP
1
$new_id = mysql_insert_id();
0
7 / 7 / 2
Регистрация: 29.01.2011
Сообщений: 110
23.10.2014, 11:31  [ТС]
PHP
1
2
3
4
5
6
7
$query = "INSERT INTO device SET  name='".$name."', ip_addr='".$ip_addr."', mac_addr='".$mac_addr."', id_type='".$id_type."', id_role='".$id_role."', date=CURRENT_TIMESTAMP, id_user='".$GLOBALS["user"]['id']."' ";
 
// Выполняем запрос. Если произойдет ошибка - выводим ее.
$res = mysql_query($query, $GLOBALS['db_cms']) or die(mysql_error()); 
// Определяем идентификатор последней добавленной записи в этой таблице 
$id = mysql_insert_id(); 
print 'Самая последняя запись имеет ID: '.$id;
Побывал так выдает всегда 0
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
23.10.2014, 11:33
Цитата Сообщение от micro-chipset Посмотреть сообщение
Побывал так выдает всегда 0
а в базу заносит данные?
0
7 / 7 / 2
Регистрация: 29.01.2011
Сообщений: 110
23.10.2014, 11:34  [ТС]
Заносит
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
23.10.2014, 11:40
Цитата Сообщение от micro-chipset Посмотреть сообщение
Заносит
выложи структуру таблицы
0
7 / 7 / 2
Регистрация: 29.01.2011
Сообщений: 110
23.10.2014, 11:49  [ТС]
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
--
-- Структура таблицы `device`
--
 
CREATE TABLE IF NOT EXISTS `device` (
  `id` int(8) NOT NULL auto_increment,
  `name` varchar(80) NOT NULL,
  `ip_addr` varchar(20) NOT NULL,
  `mac_addr` varchar(80) NOT NULL,
  `id_type` int(8) NOT NULL,
  `id_role` int(8) NOT NULL,
  `date` datetime NOT NULL,
  `upd_date` datetime NOT NULL,
  `id_user` int(8) NOT NULL,
  `upd_id_user` int(8) NOT NULL,
  `id_addr` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=192 ;
 
--
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
23.10.2014, 12:08
у меня все выводит:
PHP
1
2
3
4
5
<?php
    include ("setup.php");
    mysql_query("INSERT INTO `last_id`.`device` (`id`, `name`, `ip_addr`, `mac_addr`, `id_type`, `id_role`, `date`, `upd_date`, `id_user`, `upd_id_user`, `id_addr`) VALUES (NULL, 'name', '22323232', 'dsfdgfg', '222', '222', '2014-10-01 04:06:10.122129', '2014-10-21 03:08:15.183379', '222', '222', '222');", $db);
    printf("Идентификатор последней вставленной записи %d\n", mysql_insert_id()); 
    ?>
результат: 193
это с учетом созданной таблицы с последним id=192 (используя твой код)
0
7 / 7 / 2
Регистрация: 29.01.2011
Сообщений: 110
23.10.2014, 12:24  [ТС]
Это конечно хорошо. Но проблема остается. Может ошибка где то выше. Вот полный код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
# device_add.php содержит html код для страницы добавления оборудование
 
    include     "includes/main.php"; //инклудим файл с php функциями
    check_rights('add_network'); // проверяем права
?>
<html>
        <head>
                <meta http-equiv="content-type" content="text/html; charset=utf8" />
        <title>Оборудование</title>
                <link rel=stylesheet href="includes/styles.css">
 
        </head>
        <body>
<? include "includes/menu.php" ?><br>
<center>
<?php
// переменный для полей
 
$name       =   $_POST['name']; 
$ip_addr    =   $_POST['ip_addr'];
$mac_addr   =   $_POST['mac_addr']; 
$id_type    =   $_POST['id_type'];
$id_role    =   $_POST['id_role'];
 
// проверка что поле ip адрес заполнено
if ($ip_addr != "") {
// запрос для вставки
$query = "INSERT INTO device SET  name='".$name."', ip_addr='".$ip_addr."', mac_addr='".$mac_addr."', id_type='".$id_type."', id_role='".$id_role."', date=CURRENT_TIMESTAMP, id_user='".$GLOBALS["user"]['id']."' ";
 
// Выполняем запрос. Если произойдет ошибка - выводим ее.
$res = mysql_query($query, $GLOBALS['db_cms']) or die(mysql_error()); 
// Определяем идентификатор последней добавленной записи в этой таблице 
$id = mysql_insert_id(); 
print 'Самая последняя запись имеет ID: '.$id; 
 
$query_s = "select `id`, `name`, `ports` from `type_device` where id = '".$id_type."';";
$result = mysql_query($query_s, $GLOBALS['db_cms']) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
    for ($i = 1; $i <= $row['ports']; $i++) {
        
        $query_i = "INSERT INTO `ports` (`port_id`, `parent_id`, `status`, `desc`, `speed`) VALUES (".$i.", '.$id.', '0', NULL, '100M')";
        $ins = mysql_query($query_i, $GLOBALS['db_cms']) or die(mysql_error());
    }
}
 
?>
<div style="text-align: center; margin-top: 10px;">
<font color="green">Данные успешно сохранены!</font>
 
<a href="device.php">Вернуться назад</a></div>
<?php }
else {
echo "Укажите IP адрес нового устройства";
}
 
?>
   
    
<br>
<div id="wall"></div>
<div id="status"></div>
</center>
        </body>
</html>
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
23.10.2014, 12:57
Цитата Сообщение от micro-chipset Посмотреть сообщение
Это конечно хорошо. Но проблема остается. Может ошибка где то выше. Вот полный код
у меня все работает:
PHP
1
2
mysql_query("INSERT INTO `last_id`.`device` SET name='name', ip_addr='222', mac_addr='54564', id_type='456546', id_role='66666', date=CURRENT_TIMESTAMP, id_user='5555'", $db);
    printf("Идентификатор последней вставленной записи %d\n", mysql_insert_id());
1
7 / 7 / 2
Регистрация: 29.01.2011
Сообщений: 110
23.10.2014, 13:17  [ТС]
Я понял, что у вас работает. Мне то надо у меня что бы работало. Я хочу найти ошибку у себя, но найти не могу. В этом и вопрос, а не в том что работает у вас.
0
Software Engineer
 Аватар для Custos
332 / 335 / 55
Регистрация: 23.09.2014
Сообщений: 983
23.10.2014, 13:18
Дырявость кода автора просто зашкаливает...
0
7 / 7 / 2
Регистрация: 29.01.2011
Сообщений: 110
23.10.2014, 13:27  [ТС]
Тем что передается данные пользователя потом не проверяют или в чем?
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
23.10.2014, 13:27
попробовал Ваш код он тоже работает: ну естественно убрал глобальные переменные:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php$name       =   'name'; 
$ip_addr    =   '11111';
$mac_addr   =   '22222'; 
$id_type    =   '22222';
$id_role    =   '22222';
 
// проверка что поле ip адрес заполнено
if ($ip_addr != "") {
$query = "INSERT INTO device SET  name='".$name."', ip_addr='".$ip_addr."', mac_addr='".$mac_addr."', id_type='".$id_type."', id_role='".$id_role."', date=CURRENT_TIMESTAMP, id_user='123' ";
 
// Выполняем запрос. Если произойдет ошибка - выводим ее.
$res = mysql_query($query) or die(mysql_error()); 
// Определяем идентификатор последней добавленной записи в этой таблице 
$id = mysql_insert_id(); 
print 'Самая последняя запись имеет ID: '.$id; 
 
 
?>
<div style="text-align: center; margin-top: 10px;">
<font color="green">Данные успешно сохранены!</font>
 
<a href="device.php">Вернуться назад</a></div>
<?php }
else {
echo "Укажите IP адрес нового устройства";
}
 
?>
1
7 / 7 / 2
Регистрация: 29.01.2011
Сообщений: 110
23.10.2014, 13:34  [ТС]
mysql_insert_id(); тоесть не работает с глобальными переменными? Подскажите где может быть еще проблема.

Добавлено через 1 минуту
Или проблема что дальше есть еще insert
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
23.10.2014, 13:36
Цитата Сообщение от micro-chipset Посмотреть сообщение
тоесть не работает с глобальными переменными?
глобальные переменные убрал так как у меня нет полного кода

Добавлено через 1 минуту
Цитата Сообщение от micro-chipset Посмотреть сообщение
Или проблема что дальше есть еще insert
в этом как раз то и нет проблем http://php.net/manual/ru/funct... ert-id.php
1
7 / 7 / 2
Регистрация: 29.01.2011
Сообщений: 110
23.10.2014, 13:51  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$db_host    =       "localhost";
$db_user    =   "root";
$db_pass    =   "1511515";
$db_name    =       "chain";
 
global $db_cms;               //Глобальные переменные
//открываем соединение с БД систем
    $db_cms=mysql_connect($db_host,$db_user,$db_pass) OR DIE("Не могу создать соединение с базой системы");
    mysql_query("SET NAMES utf8",$db_cms);
    mysql_select_db($db_name, $db_cms) or die(mysql_error());
Это инклудится
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
23.10.2014, 14:01
Цитата Сообщение от micro-chipset Посмотреть сообщение
id_user='".$GLOBALS["user"]['id']."'
а это откуда?

Добавлено через 4 минуты
и зачем тебе там глобальная переменная? global $db_cms;
1
7 / 7 / 2
Регистрация: 29.01.2011
Сообщений: 110
23.10.2014, 14:34  [ТС]
Там авторизация есть еще
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//проверяем правильность логина и пароля в текущей сессии
    if (isset($_SESSION['login']))
    {
        $res=mysql_query("SELECT * FROM user WHERE login='".$_SESSION['login']."'
                        AND password='".$_SESSION['pass']."'",$db_cms);
        if(mysql_num_rows($res)!=1)
        {        //такого пользователя нет
            Header("Location: index.php");        //перенаправляем на login.php
        }
        else
        {
            global $user;                  //создаем глобальную переменную с инфой о юзере
            $user=mysql_fetch_array($res);
        }
    }
    else
    {   //если вообще нет логина, то перенаправляем на индекс, если конечно мы уже не на индексе )
        if ($_SERVER['REQUEST_URI']!="/index.php")
        {
            Header("Location: index.php");
        }
    }
 
    if ($_SERVER['REQUEST_URI']!="/index.php")
    {   //читаем права в сессию
        $_SESSION['rights']='';
        $res=mysql_query("SELECT r.name FROM rights r, user u WHERE u.id_group=r.id_group AND login='".$_SESSION['login']."'",$GLOBALS['db_cms']);
        while($row = mysql_fetch_array($res))
        {
            $_SESSION['rights'][$row['name']]=1;
        }
    }
    else
    {
        if (isset($_SESSION['login'])){header('location: request.php');} //если авторизация уже прошла, то перенаправляем на request.php
    }
Добавлено через 44 секунды
Глобальная переменная используется потому что там в некоторых местах есть запросы еще к второй базе данных которая уже на другом сервере.

Добавлено через 27 минут
Если проблема не в глобальной переменной то где тогда ошибка. Сама то глобальная переменная работает. Все запросы работают не работает лишь
PHP
1
printf("Идентификатор последней вставленной записи %d\n", mysql_insert_id());
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
23.10.2014, 14:48
Лучший ответ Сообщение было отмечено micro-chipset как решение

Решение

Цитата Сообщение от micro-chipset Посмотреть сообщение
Если проблема не в глобальной переменной то где тогда ошибка. Сама то глобальная переменная работает. Все запросы работают не работает лишь
Код PHP
1
printf("Идентификатор последней вставленной записи %d\n", mysql_insert_id());
если у тебя две базы используются попробуй так
PHP
1
printf("Идентификатор последней вставленной записи %d\n", mysql_insert_id($GLOBALS['db_cms']));
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2014, 14:48
Помогаю со студенческими работами здесь

Запрос в бд mysql
Доброго времени суток. Подскажите где ошибка в запросе? Вылетает ошибка SQL синтаксиса $q2=&quot;INSERT INTO (`login`,`password`,...

MySql запрос
Здравствуйте. Код примерно такой $news = mysql_query (&quot;select * from all_news where type='$type_ru' order by date desc&quot;); ...

Запрос MySQL
Помогите составить правильно запрос SQL if ($_SERVER == &quot;PUT&quot;){ $putdata = file_get_contents(&quot;php://input&quot;, &quot;r&quot;); ...

Запрос в mysql
как в mysql отправить запрос на добавление поля через php-скрипт Посоветуйте информацию на эту тему.

Запрос к БД mysql
Добрый день! Выполнить команду к БД OPTIMIZE TABLE table_name; В ответ получаю ошибку. Исключение при вызове &quot;Fill&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru