In acest tutorial puteti invata cum sa verificati cu PHP daca unul sau mai multe tabele exista intr-o baza de date MySQL.
Comanda SQL ce returneaza o lista cu toate tabelele dintr-o baza de date este aceasta:
SHOW TABLESSAU:
SHOW TABLES IN `nume_bazadate`- Rezultatul returnat de aceasta interogare e retinut intr-un alias cu numele Tables_in_numebazadate ; numebazadate este numele bazei de date in care se face verificarea.
<?php
// conectare la baza de date tests
$conn = new mysqli('localhost', 'root', 'pass', 'tests');
// verificare conexiune
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
// SQL query
$sql = "SHOW TABLES IN `tests`";
// executa interogarea si retine rezultatul
$result = $conn->query($sql);
// daca $result nu e False si contine cel putin un rand
if($result !== false) {
// daca e cel putin un tabel in result
if($result->num_rows > 0) {
// parcurge datele si returneaza numele fiecarui tabel
while($row = $result->fetch_assoc()) {
echo '<br />'. $row['Tables_in_tests'];
}
}
else echo 'Nu exista tabele in "tests"';
}
else echo 'Baza de date "tests" nu poate fi verificata, eroare - '. $conn->error;
$conn->close();
?>
Acest cod va returna urmatorul rezultat:
SHOW TABLES IN `numebazadate` WHERE `Tables_in_numebazadate` = 'nume_tabel'
<?php
// conectare la baza de date tests
$conn = new mysqli('localhost', 'root', 'pass', 'tests');
// verificare conexiune
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
// SQL query
$sql = "SHOW TABLES IN `tests` WHERE `Tables_in_tests` = 'users'";
// executa interogarea si retine rezultatul
$result = $conn->query($sql);
// daca $result nu e False si contine cel putin un rand
if($result !== false) {
// daca $result contine cel putin un rand tabelul exista, altfel, nu exista
if ($result->num_rows > 0) echo 'Tabelul "users" exista';
else echo 'Tabelul "users" Nu exista';
}
else echo 'Baza de date "tests" nu poate fi verificata, eroare'. $conn->error;
$conn->close();
?>
// verifica daca tabelele din $tables exista in $db
function tableExist($conn, $db, $tables) {
$eror = false;
// daca $ables e sir, il transformna in Array
if(is_string($tables)) $tables = array($tables);
$result=$conn->query("SHOW TABLES IN `$db`");
if($result !== false) {
// daca e cel putin un tabel in $result
if($result->num_rows > 0) {
// parcurge $result si retine datele intr-un array
while($row = $result->fetch_assoc()) {
$tables_db[] = $row['Tables_in_'.$db];
}
// verifica daca fiecare tabel din $tables este in $tables_db, altfel seteaza eroare
for($i=0; $i<count($tables); $i++) {
if(!in_array($tables[$i], $tables_db)) $eror[] = 'Tabelul '. $tables[$i]. ' Nu exista in "'. $db. '"';
}
}
else $eror[] = 'Nici un tabel in "'. $db. '"';
}
else $eror[] = 'Nu se poate verifica "'. $db. '"';
// daca $eror nu e false, afiseaza erorile si returneaza false, altfel, returneaza true
if($eror !== false) {
echo implode('<br/>', $eror);
return false;
}
else return true;
}
Functia tableExist() primeste trei argumente:
<?php
// Cursuri gratuite - www.marplo.net
// verifica daca tabelele din $tables exista in $db
function tableExist($conn, $db, $tables) {
$eror = false;
// daca $ables e sir, il transformna in Array
if(is_string($tables)) $tables = array($tables);
$result=$conn->query("SHOW TABLES IN `$db`");
if($result !== false) {
// daca e cel putin un tabel in $result
if($result->num_rows > 0) {
// parcurge $result si retine datele intr-un array
while($row = $result->fetch_assoc()) {
$tables_db[] = $row['Tables_in_'.$db];
}
// verifica daca fiecare tabel din $tables este in $tables_db, altfel seteaza eroare
for($i=0; $i<count($tables); $i++) {
if(!in_array($tables[$i], $tables_db)) $eror[] = 'Table '. $tables[$i]. ' Not exist in "'. $db. '"';
}
}
else $eror[] = 'Nici un tabel in "'. $db. '"';
}
else $eror[] = 'Nu se poate verifica "'. $db. '"';
// daca $eror nu e false, afiseaza erorile si returneaza false, altfel, returneaza true
if($eror !== false) {
echo implode('<br/>', $eror);
return false;
}
else return true;
}
$db = 'tests';
// conectare la baza de date tests
$conn = new mysqli('localhost', 'root', 'pass', $db);
// verificare conexiune
if (mysqli_connect_errno()) {
exit('Connect failed: '. mysqli_connect_error());
}
// array cu numele tabelelor
$tables = array('comments', 'temp', 'users');
// apeleaza functia tableExist()
if(tableExist($conn, $db, $tables)) echo 'Toate tabelele: <i>'. implode(', ', $tables). '</i> exista';
?>