PHP / SQL ile dinamik adlandırma veritabanları

4 Cevap php

Hey there guys and gals. I'm very new to php and am following various tutorials, reading books, watching videos etc.
The reason I'm learning is to create one specific web application, as well as to make that jump from simple geek to proper nerd, of course.
So far I've managed to learn most of what I need to create this web app.

The key part that has thus far eluded me is creating a dynamically-named, pre-defined(structure) database.
Essentially the application is a giant booking system. When a user registers I want the system to create a new database and link it to their account.

Whilst I know that I could easily have a php file that could run some SQL to create a database with all the right tables and columns, I don't know how to give that new database a unique name.

Bu isim aynı zamanda ana kullanıcıları tabloya yazılması gerekiyor ki o müşterinin hesap günlükleri bağlanan bir kullanıcı adı, bu bağlantı dizesinde olduğu veritabanı adı kullanır ve onların verilerini çeker zaman. Ama, ben bir parçası olarak karmaşık olmazdı eminim.

Bu konularda, ben MySQL kullanıyorum. Herhangi bir yardım büyük takdir edilecektir.

Edit: I should've made clear why I need more than one database in the first place, my apologies.
Essentially, it's going to be a private calendar(of sorts) system for businesses. Because of that, there will be an 'owner' of each database and all employees of that person will be utilising their employer's database.

4 Cevap

Onun adı gibi kullanıcı hakkında benzersiz bir şey bulmak ve onunla birlikte yeni bir veritabanı adı öneki. Örneğin benim ilk veritabanı, benim ikinci bir inerte_0 olacağını bu yüzden, yeni bir oluştururken zaten bu kullanıcıya atanmış veritabanlarının sayısını bağlamak inerte_1. Olabilir Bunu aslında Mysql veritabanı adlarında izin verilen karakter müteşekkil olmadığını denetlemek için veritabanı adı öneki için kullanacağız ne olursa olsun sterilize etmeyi unutmayın!

Her kullanıcı için yeni bir veritabanı oluşturmak gerekiyorsa, ben soruna yaklaşım yeniden düşünülmesini radikal öneririm.

Çok az sorun o kadar olacak gerektirebilir.

Bir rezervasyon sistemi için, örneğin, ben aşağıdaki tabloları ile bir veritabanına ihtiyaç olacağını hayal ediyorum:

  • Her kullanıcı için kullanıcı bilgileri ile Bir kullanıcı tablo
  • Hakkında bilgi ile bir otel tablo (bu otel rezervasyonu eğer, ne gerek yerine) oteli-
  • Bir kullanıcı, bir otel ve bir süre her rezervasyon bağlayan bir rezervasyon tablo.

Edit:

Bunun uygun edileceği için bir sorun bir örnek meta-rezervasyon sistemi olacak; Eğer kendi sitenizde ya da her neyse bir rezervasyon sistemi kurmak olabilir bir sistem olarak.

Bu ne ihtiyaç varsa, bu görmezden.

Bu kesinlikle mümkün değildir. Sen ki, örneğin çağrı uniqid() ve (olası olsa) o zaman bir nüsha üzerine gerçekleşmesi durumunda bu isimle varolan bir veritabanında kontrol edin.

Ancak, genel bir yaklaşım son derece dikkatli. Genel olarak, tabloları zamanında (TEMPORARY tablolar hariç) oluşturmak zorunda olmamalıdır. Bunun yerine, tek bir veritabanında tüm kuruluşlar için veri koymak, ama kayıtları hangi kullanıcı ile ilişkili ayırt etmek basit bir sütun ile olabilir.

"Ana kullanıcıların tablo" Eğer Oturuyor söz neyin veritabanı - Eğer bazı bilgileri depolamak için merkezi bir veritabanı kullanarak gibi geliyor. Ayrıca bir kullanıcı, merkezi bir veritabanında bir müşteri tablo ima ile ilişkili olduğu müşteri belirleyebilir söz.

Müşterileri tablo çok büyük olasılıkla bir birincil anahtar alanı vardır. Her müşterinin veritabanı için benzersiz bir tanımlayıcı vardır. Bunu kullanabilir, ya da bu satırdan bilgi, gibi bir şey bir arada kullanarak bir tür karma oluşturabilir:

$unique = md5( $client_id . $client_name . $date_created );

Ayrıca müşteri veritabanı adlarını tutan sütun benzersiz olması için ayarlanmış olduğundan emin olun.