Verificare daca exista baza de date si tabel in mysql

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
ionut
Mesaje: 25

Verificare daca exista baza de date si tabel in mysql

Salut,

Am nevoie de putin ajutor :) vreau sa caut o baza de date si daca ea nu este gasita sa o creez eu, la fel si cu tabelele dintr-o baza de date, sa caut daca un tabel anume exista si daca nu este gasit sa il creez.

Ceea ce eu caut, sunt doua functii pentru MySQLi, sau alte modalitati, cu ajutorul carora sa pot stabili daca o baza de date sau un tabel exista sau nu pentru a ma putea folosi de rezultat intr-un if()

Tin sa precizez ca am gasit cateva functii pe site-ul php-ului parca, dar zicea ca functiile respective sunt invechite sau eliminate si ca trebuie sa folosesc versiunea de MySQLi.

Multumesc!

MarPlo
Salut
1. Cu acest cod poti verifica in php daca o anumita baza de date exista in mysql:

Cod: Selectaţi tot

$conn = new mysqli('localhost', 'root', 'password');
$dbname ='baza_date';
$res = $conn->query("SHOW DATABASES LIKE '$dbname'");
if($res){
  if($res->num_rows >0) echo "Database: $dbname exits";
  else echo "Database: $dbname Not exits";
}
2. Cu acest cod poti verifica in php daca un anumit tabel exista in baza de date:

Cod: Selectaţi tot

$conn = new mysqli('localhost', 'root', 'password', 'dbname');
if(mysqli_connect_errno()) exit('Connect failed: '. mysqli_connect_error());
$tbname ='table_name';
$res = $conn->query("SHOW TABLES LIKE '$tbname'");
if($res){
  if($res->num_rows >0) echo "Table: $tbname exits";
  else echo "Table: $tbname Not exits";
}
3. Aceasta instructiune sql creaza baza de date daca nu exista:

Cod: Selectaţi tot

CREATE DATABASE IF NOT EXISTS DB_Name;
4. Aceasta instructiune sql creaza tabel in baza de date, daca tabelul nu exista:

Cod: Selectaţi tot

CREATE TABLE IF NOT EXISTS table_name (columns data ...) CHARACTER SET utf8 COLLATE utf8_general_ci

ionut
Multumesc pentru raspuns, a fost foarte util.

Legat insa de baza de date as dori sa aflu daca exista o baza de date pe server, dar nu una anume, mai exact vreau sa aflu numarul lor, ca sa stiu daca sa creez una sau merg pe alea existente.

In exemplul dat de tine este cautata o anume baza de date nu pe toate, am incercat sa adaptez eu codul respectiv dar nu mi-a reusit.

Multumesc, o zi buna!

MarPlo
Acest cod afiseaza o lista cu bazele de date valabile pt. userul conectat:

Cod: Selectaţi tot

$conn = new mysqli('localhost', 'root', 'password');
$res = $conn->query("SHOW DATABASES");
if($res && $res->num_rows >0){
  while($row = $res->fetch_row()){
    if(!in_array($row[0], ['information_schema', 'performance_schema', 'mysql'])) echo '<br>'. $row[0];
  }
}
else echo 'Not databases for this account.';

ionut
S-a rezolvat, multumesc pentru informatii!

Subiecte similare