MySQL и все с ним связанное

Здесь обсуждаются различные программы, компьютеры, ноутбуки, операционные системы, связь, компьютерные сети, модемы, смартфоны, сотовые телефоны, цифровое и IP-телевидение и т.д.

Модераторы: Aneta, ru

Аватара пользователя
ru
забанен
Сообщения: 6937
Зарегистрирован: 23 июн 2006 08:42

Re: MySQL

Сообщение ru » 11 янв 2011 11:19

Garipov72 писал(а)::roll: опять вопрос, делаю запись в таблице:

Код: Выделить всё

INSERT INTO the_catalog VALUE (0, переменная1, переменная2)
можно сразу id получить созданной записи?
Хотел реализовать следом запрос на поиск записи по переменной1 и переменной2, но вдруг они одинаковые, так что вариант отпал сразу :(
Кажется стал понимать, что спрашиваешь. Как я понял поле id - автоинкрементное и используется как первичный ключ базы. А сразу после insert тебе нужно узнать значение поля ID последней добавленной записи.
На мой взгляд это можно сделать двумя способами:
Например, такой запрос mysql вернет значение поля id последнего вызова insert
select last_insert_id() from таблица

Кроме того, на мой взгляд можно сделать еще
select count (*) from таблица - это выдаст количество записей в таблице, соответственно, если записи из таблицы не удалялись, то поле id будет равно select count (*) from таблица.

Ну, а если обволакиваешь запросы в php, то там есть функция mysql под названием mysql_insert_id - возвращает значение автоинкрементного поля последнего mysql-запроса

Аватара пользователя
Garipov72
webmaster
Сообщения: 2159
Зарегистрирован: 20 ноя 2009 16:16
Откуда: Москва

Re: Как создать запросы SQL

Сообщение Garipov72 » 11 янв 2011 17:47

:roll: сделал с mysql_insert_id () самый что не наесть простой способ. Спасибо ru. Что косается записей, то их сейчас всего 4, а id уже 65 :)
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки

Аватара пользователя
ru
забанен
Сообщения: 6937
Зарегистрирован: 23 июн 2006 08:42

Re: Как создать запросы SQL

Сообщение ru » 11 янв 2011 19:34

Garipov72 писал(а)::roll: сделал с mysql_insert_id () самый что не наесть простой способ
Полностью согласен, но нужно смотреть что лучше по производительности: есть мнение, что функции php для работы с mysql несколько тормозят работу с базой, поскольку сначала должен интерпретироваться код php в бинарное представление, потом обратиться к mysql-серверу, а в случае задействования функции last_insert_id сразу задействуется обращение к mysql-серверу без интерпретации php-кода

Аватара пользователя
Garipov72
webmaster
Сообщения: 2159
Зарегистрирован: 20 ноя 2009 16:16
Откуда: Москва

Re: Как создать запросы SQL

Сообщение Garipov72 » 11 янв 2011 20:00

:roll: здесь еденичный запрос, думаю это эфективнее, но на заметку взял. Спасибо за справку.
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки

Аватара пользователя
Garipov72
webmaster
Сообщения: 2159
Зарегистрирован: 20 ноя 2009 16:16
Откуда: Москва

Re: PHP and SQL

Сообщение Garipov72 » 21 янв 2011 12:26

:roll: предлагаю не создавать темы, а все что косается MySQL и Php прописывать здесь дальше.

Нужен совет как сделать не ограниченное число вложенных категорий в MySQL?
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки

Аватара пользователя
Lucifer87
Почетный участник форума
Сообщения: 1177
Зарегистрирован: 11 мар 2010 20:16
Откуда: Санкт-Петербург
Контактная информация:

Re: PHP and MySQL

Сообщение Lucifer87 » 21 янв 2011 13:34

простите что влезаю, но по моему вас тут всего двое "шаряших" в "мускуле"))))
да, я - хам... но присмотрись и ты увидишь в моих постах быть может... правду?..
I do not believe anyone...

Аватара пользователя
Garipov72
webmaster
Сообщения: 2159
Зарегистрирован: 20 ноя 2009 16:16
Откуда: Москва

Re: PHP and MySQL

Сообщение Garipov72 » 21 янв 2011 16:21

Пусть даже и так, хоть кто то есть чем вообще не кого.
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки

Аватара пользователя
Garipov72
webmaster
Сообщения: 2159
Зарегистрирован: 20 ноя 2009 16:16
Откуда: Москва

Re: PHP and MySQL

Сообщение Garipov72 » 27 янв 2011 15:53

С помощью PHP mysql_num_rows () можно посчитать сколько записей в таблице, однако такой метод приемлем только к полученным данным, т.е. что бы посчитать сколько всего записей придется всю таблицу выгружать, а это чревато нагрузкой высокой. Можно в MySQL сделать запрос, в ответ на который придет число записей?
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки

Аватара пользователя
ru
забанен
Сообщения: 6937
Зарегистрирован: 23 июн 2006 08:42

Re: PHP and MySQL

Сообщение ru » 27 янв 2011 15:58

Garipov72 писал(а):С помощью PHP mysql_num_rows () можно посчитать сколько записей в таблице, однако такой метод приемлем только к полученным данным, т.е. что бы посчитать сколько всего записей придется всю таблицу выгружать, а это чревато нагрузкой высокой. Можно в MySQL сделать запрос, в ответ на который придет число записей?
select count
mysql_num_rows делает тоже самое (отправляет запрос select count серверу баз данных) - поэтому нагрузка совсем незначительно будет. Минус этого варианта будет лишь для интерпретации php-кода (просто эффективней сразу отправить запрос серверу баз данных, а не заворачивать его в php-код)

Аватара пользователя
Garipov72
webmaster
Сообщения: 2159
Зарегистрирован: 20 ноя 2009 16:16
Откуда: Москва

Re: PHP and MySQL

Сообщение Garipov72 » 27 янв 2011 16:01

Обычно я так использую:

Код: Выделить всё

$sql = 'SELECT * FROM Таблица';
$qur = mysql_query ($sql);
if ($qur) {
    $num = mysql_num_rows ($qur);
    echo "Число записей".$num;
}
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки

Аватара пользователя
Garipov72
webmaster
Сообщения: 2159
Зарегистрирован: 20 ноя 2009 16:16
Откуда: Москва

Re: PHP and MySQL

Сообщение Garipov72 » 27 янв 2011 16:07

Наткнулся на мануал по select count
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки

Аватара пользователя
ru
забанен
Сообщения: 6937
Зарегистрирован: 23 июн 2006 08:42

Re: PHP and MySQL

Сообщение ru » 27 янв 2011 16:10

Garipov72 писал(а):Наткнулся на мануал по select count
ну вот SELECT COUNT (*) FROM Таблица все записи и посчитает

Аватара пользователя
Garipov72
webmaster
Сообщения: 2159
Зарегистрирован: 20 ноя 2009 16:16
Откуда: Москва

Re: PHP and MySQL

Сообщение Garipov72 » 27 янв 2011 16:14

Спасибо
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки

Аватара пользователя
Garipov72
webmaster
Сообщения: 2159
Зарегистрирован: 20 ноя 2009 16:16
Откуда: Москва

Re: PHP and MySQL

Сообщение Garipov72 » 27 янв 2011 16:20

Код: Выделить всё

print_r (mysql_query ("SELECT COUNT(*) FROM Таблица"));
возражает Resource id #65
Там где правила игры не позволяют выиграть, английские джентльмены меняют правила @ Гарольд Джозеф Ласки

Аватара пользователя
ru
забанен
Сообщения: 6937
Зарегистрирован: 23 июн 2006 08:42

Re: PHP and MySQL

Сообщение ru » 27 янв 2011 16:42

Володя, во мне борются два желания:
1) отправить тебя читать мануалы по PHP и SQL
2) все-таки разложить по пальцам

mysql_query() - это лишь SQL-запрос к серверу баз данных из PHP, вот он тебе на print идентификатор запроса и выводит, а тебе нужно еще принять от него ответ. Это делают функции типа mysql_fetch*

Ответить