Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 14:41 01.07.24 
Клубове/ Компютри и Интернет / Бази данни Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Re: честно казано ... [re: unF]
Автор salle (един такъв)
Публикувано22.02.04 18:29  



.. не точно грешка, но имам някои много сериозни забележки към твоя отговор.

Първото е, че човекът не пита за PHP - може примерно от Java да работи или през ODBC и т.н.

Но това да кажем е малък проблем - дал си пример като за PHP

Само, че в твоя отговор има някои много сериозни логически грешки. Ти може и да си ги знаеш, но не е хубаво да даваш такива съвети. Тези които те четат обикновено повтарят едно към едно (направо Copy/Paste) а значи повтарят и грешките ти.



$q = "SELECT * FROM tableName WHERE user = 'abc' AND a = '0' AND b = '0'";
$r = mysql_fetch_object(mysql_db_query($dbname,$q,$dblink));

if ($r->id != 0){


Правиш SELECT * ... когато реално ти трябва само ID

Това е грубо разхищение на ресурси както и да го погледнеш. Само една такава разлика между SELECT * FROM и SELECT ID FROM може да ти забави стотици пъти приложението и да ти изяде огромно количество памет съвсем ненужно.

Това е основно правило не само в базите данни но и изобщо в програмирането. Никога не изисквай нещо което няма да използваш. Независимо дали става въпрос за данни, памет и т.н.

Следващото нещо за което вече си за бой (виртуален )

$r = mysql_fetch_object(mysql_db_query($dbname,$q,$dblink));

if ($r->id != 0){


Викаш mysql_query без да провериш резултата за грешка. Никога не бива да го правиш ама в случая дори не става въпрос за теб.

Даваш съвет на някой друг! Не бива да забравяш, че тези които четат твоя съвет може и нищичко да не разбират. И след това ще идват тук и нявсякъде другаде да питат защо гърми еди как си.

Никак не е случайно, че и най-най-най-простичките примери на php.net изгреждат ето така:



Example 2. mysql_query()
<?php
$result = mysql_query("SELECT my_col FROM my_tbl")
or die("Invalid query: " . mysql_error());
?>

И накрая нещо, което може просто да не знаеш

$q = "SELECT * FROM tableName WHERE user = 'abc' AND a = '0' AND
$q = "INSERT INTO tableName SET user = 'abc', a = '0', b = '0'";
$id = mysql_insert_id();

ako pravilno sym te razbral taka shte stane s nai-mnogo dve .. :)

Това са три заявки а не две

mysql_insert_id();
просто изпраща към сървъра
SELECT LAST_INSERT_ID();

Надявам се да не се разсърдиш иска ми се съветите ми са приятелски.

Колкото до задачката като такава тя наистина е много често срещана, но силно зависи от конкретната структура на таблицата.
Кое е първичния ключ?
Има ли втори уникален ключ или не?
Всички стойности ли се задават в INSERT или някои се оставят по подразбиране?
Има ли AUTO_INCREMENT?
Какво се прави в случай на съществуващ запис? Просто продължаваш нататък или правиш UPDATE на съществуващия?
Има ли проблем с конкурентността? При PHP в 99% от случаите има - може много браузъри едновременно да отворят този скрипт.
С транзакции ли се работи или не?

Има и още подробности. Ако искате може да поразвием темата в различни варианти.

В някои случаи може да се мине с една заявка:
REPLACE INTO
или един синтаксис който го има от 4.1 нагоре
INSERT INTO .... ON DUPLICATE KEY UPDATE ....

в други случаи може да трябват 4 заявки
LOCK ...
SELECT ...
INSERT ...
UNLOCK ...



Цялата тема
ТемаАвторПубликувано
* MySql въпрос edembg   20.02.04 09:18
. * Re: MySql въпрос unF   20.02.04 11:14
. * Re: MySql въпрос edembg   20.02.04 16:29
. * Re: MySql въпрос salle   20.02.04 12:38
. * Re: MySql въпрос edembg   20.02.04 16:50
. * Re: MySql въпрос unF   20.02.04 22:36
. * Re: MySql въпрос edembg   22.02.04 10:26
. * Re: честно казано ... salle   22.02.04 18:29
. * Re: честно казано ... edembg   23.02.04 19:47
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.