Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> insert do dwóch tabel, zależność obcego klucza
bliitz
post 15.04.2008, 21:19:11
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 12
Dołączył: 5.04.2008

Ostrzeżenie: (0%)
-----


Witam

Mam w bazię między innymi takie dwie tabele:

Kod
  
  
   CREATE TABLE pictures (
       id_picture INTEGER UNSIGNED DEFAULT 0 NOT NULL,
       PRIMARY KEY (id_picture)
   ) ENGINE=InnoDB;
  
   CREATE TABLE records (
       id_record INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
       categories_id_categorie INTEGER UNSIGNED DEFAULT 0 NOT NULL,
       pictures_id_picture INTEGER UNSIGNED DEFAULT 0 NOT NULL,
       movies_id_movie INTEGER UNSIGNED DEFAULT 0 NOT NULL,
       users_id_user INTEGER UNSIGNED DEFAULT 0 NOT NULL,
       title VARCHAR(80) DEFAULT '' NOT NULL,
       count INTEGER UNSIGNED DEFAULT 0 NOT NULL,
       size INTEGER UNSIGNED DEFAULT 0 NOT NULL,
       location_file VARCHAR(80) DEFAULT '' NOT NULL,
       add_date INT DEFAULT 0 NOT NULL,
       adult TINYINT UNSIGNED DEFAULT 0 NOT NULL,
       PRIMARY KEY (id_record)
   ) ENGINE=InnoDB;
  
   CREATE INDEX records_FKIndex1 ON records (users_id_user ASC);
  
   CREATE INDEX records_FKIndex2 ON records (movies_id_movie ASC);
  
   CREATE INDEX records_FKIndex3 ON records (pictures_id_picture ASC);


i teraz chcę dodać jakiś wpis to tabeli rekord, wykonuje to za pomocą takiego polecenia :

  1. <?php
  2. parent::query('INSERT INTO records(title, categories_id_categorie, size, add_date, adult) 
  3.  VALUES('."'$title'".','."'$category'".','."'$size'".','."'$now'".','."'$adult'".')');
  4.  
  5. $last_id = mysql_insert_id();
  6.  
  7. parent::query('INSERT INTO pictures(id_picture) VALUES('."'$last_id'".')');
  8. ?>


po wykonaniu tego pojawiają sie wartości w obu tabelach prawidłowo, jednak pole pictures_id_picture w tabeli RECORDS jest puste. Jest to klucz obcy z tabeli PICTURES a w niej prawidłowo jest dodany rekord, czy musze dodawać ręcznię tą wartosć także do tabeli RECORS czy jako klucz obcy nie powinna zostać automatycznie uzupełniona??


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
marcio
post 15.04.2008, 22:48:19
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Cytat
CREATE TABLE pictures (
id_picture INTEGER UNSIGNED DEFAULT 0 NOT NULL,
PRIMARY KEY (id_picture)
) ENGINE=InnoDB;

Nie powinny byc tez auto_increment skoro to id questionmark.gifA jak chcesz modyfikowac na podstawie id uzuj update


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
bliitz
post 15.04.2008, 23:22:31
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 12
Dołączył: 5.04.2008

Ostrzeżenie: (0%)
-----


Cytat(marcio @ 15.04.2008, 23:48:19 ) *
Nie powinny byc tez auto_increment skoro to id questionmark.gif A jak chcesz modyfikowac na podstawie id uzuj update


Wydaje mi się że nie może być auto_increment bo wartości dodawane są tam jako to co zwróci funkcja mysql_insert_id().

Nie chodzi mi o modyfikowanie tylko o to że skoro w tabeli pictures jest jakas wartość w polach id_pictures to dlaczego nie jest ona widoczna w tabeli records skoro to jest klucz obcy w niej, w records w kolumnie id_pictures są same 0 mimo że w tabeli pictures wartości są inne.

Ten post edytował bliitz 15.04.2008, 23:23:22


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 08:32