Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> insert do dwóch tabel, zależność obcego klucza
bliitz
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) A jak chcesz modyfikowac na podstawie id uzuj update
Go to the top of the page
+Quote Post
bliitz
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 13:55