2011-01-17 33 views
1

Ich arbeite in Code-Zünder,überprüfen, ob der Wert existiert

Code-Zünder hat eine Funktion namens table_exists();

wo übergeben Sie es einen Tabellennamen, und wie erwartet überprüft die Datenbank, ob es existiert.

Was ich tun möchte, ist,

Start mit Tabellenname

wenn Tabellenname vorhanden ist, verwenden tablename1, wenn tablename1 verwenden existiert TableName2 usw.

Meine Frage ist,

was der beste Weg, dies zu schreiben?

+1

Das riecht wie eine schreckliche Idee verwenden! In der Tat riecht es genau wie [dieser] (http://thedailywtf.com/Articles/Confessions-The-Shopping-Cart.aspx). Wofür in der Welt möchten Sie das verwenden? – deceze

+0

@deceze: sehr wahr, Wie sonst würden Sie den Inhalt dieser CSV-Dateien speichern (muss in MySQL für die Indizierung sein), wo die einzige feste Tatsache über sie ist, dass sie alle eine mobile Spalte mit einem Standardformat haben, kann es haben eine beliebige Anzahl von Spalten mit einer beliebigen Anzahl von Zeilen. Sie können (ohne Übertreibung) von einer Zeile, 35 Spalten CSV bis zu einer 80 k Zeile 1 Spalte CSV reichen ... Ich bin offen für andere Ideen. – Hailwood

+0

Es gibt viele Lösungen dafür, von Attribut-Wert-Schemas zu JSON-Speicher und NoSQL-Speicher. Öffnen Sie eine neue Frage dazu. Was auch immer Sie tun, erstellen Sie keine Tabellen dynamisch! – deceze

Antwort

1
$i = 1; 
$table_name = 'table'; 
$table_name_test = $table_name; 

while($this->db->table_exists($table_name_test)) { 
    $table_name_test = $table_name . strval($i); 
    $i++; 
} 

$tablename = $tablename_test; 

Stellen Sie sicher, dass die volle $this->db->table_exists() CodeIgniter Syntax

0

Wahrscheinlich so etwas wie dieses:

$tblname = "sometablename"; 
$i = 1; 
$new_tblname = $tblname; 
while ($this->db->table_exists($new_tblname)){ 
    $new_tblname = $tblname . $i++; 
} 
echo $new_tblname; 
Verwandte Themen