Etrafa baktım ve çözümler denedim, ama nedense bu çalışmıyor. Birincil olarak arttırma anahtarı olan bir albums_id ile upcoming_albums için bir tablom var. Benim upcoming_albums_tracks tablosumda, yeni bir albüm oluşturduğumda albums_id'inin albums_id'deki ile aynı değere sahip olmasını istiyorum. İşte SQL PHP Başka bir tablonun birincil anahtarını temel alarak bir yabancı anahtarı nasıl güncellerim?
benim php sınıf dosyasıpublic function create ($title, $content, $date, $price){
$db = Dbclass::getDB();
$query = "INSERT INTO upcoming_albums (albums_title, albums_content, albums_date, albums_price, albums_img_path)
VALUES (:title, :content, :date, :price, :path)";
$statement = $db->prepare($query);
$statement->bindParam(':title', $title, PDO::PARAM_STR, 50);
$statement->bindParam(':content', $content);
$statement->bindParam(':date', $date);
$statement->bindParam(':price', $price, PDO::PARAM_STR, 10);
$statement->bindValue(':path', $this->target_path, PDO::PARAM_STR);
$statement->execute();
$query = "UPDATE upcoming_albums_tracks
SET albums_id = upcoming_albums.albums_id
FROM upcoming_albums_tracks
WHERE upcoming_albums_tracks.albums_title = upcoming_albums.albums_title";
$statement = $db->prepare($query);
$statement->execute();
} albüm oluşturma
gayet güzel çalışıyor yöntem, ama upcoming_albums_tracks tablonun albums_id olması gerekiyordu değere NULL dan değiştirmez .
İşte bir görüntünün görüntüsü.
upcoming_albums tablosu:
upcoming_albums_tracks tablo (Ben değil NULL aynı olması albums_id gerek)
GÜNCELLEME Bu takmadan kolları benim yöntemidir izler. Her albümde birden fazla parça olduğunu unutmayın, bu yüzden önce benim yaratma yöntemim çağrılır ve daha sonra foreach parçası eklenir, aşağıdaki yöntemi çalıştırırım. sorun artık hiçbir şey takılı alır geçerli:
public function createTrack ($title, $track, $index) {
$db = Dbclass::getDB();
$lastInsertId = $db->lastInsertId();
$query = "INSERT INTO upcoming_albums_tracks (albums_id, albums_title, albums_track, albums_track_path, albums_track_file)
VALUES (" . $lastInsertId . " :title, :track, :path, :file_name)";
$statement = $db->prepare($query);
$statement->bindParam(':title', $title, PDO::PARAM_STR, 50);
$statement->bindParam(':track', $track, PDO::PARAM_STR, 50);
$statement->bindValue(':path', $this->tracks[$index]['target_path'], PDO::PARAM_STR);
$statement->bindValue(':file_name', $this->tracks[$index]['file_name'], PDO::PARAM_STR);
$statement->execute();
}
garip bölüm I $ lastInsertId echo çalışırsanız, bana doğru numarayı sağlamasıdır.
, temelde bu kimliğini almak gerekir deneyin son eklenen kaydı ve güncellemeyi yapmak için kullanın. – Erick