2014-04-11 4 views
1

이 코드를 죽어 없습니다. 그러나 여전히 오류가 출력됩니다.PHP MySQLI 조용히

데이터베이스가없는 경우 필요한 항목은 하나를 만드는 것입니다. 여기에는 데이터베이스가 존재하는지 여부를 쉽게 확인할 수있는 속성 만 있습니다.

이렇게하는 것이 올바른 방법입니까?

+5

나는 제목을 보았을 때 "내 얼굴에 베개를 씌워"라고 생각했습니다. 나는 그것에 대해 누군가와 이야기해야한다고 생각합니다. :/ –

+0

데이터베이스가 없다고 생각하는 이유는 무엇입니까? 그리고 그렇다면 왜 db 사용자는 CREATE DATABASE 권한을 가지고 있습니까? –

+0

@ JohnConde : 웃음을 가져 주셔서 감사합니다. 새 와이프 화면이 있습니다. –

답변

1

데이터베이스가 있는지 여부를 모르는 경우 데이터베이스 이름을 지정하지 않고 연결해야합니다.

$this->mysqli = new mysqli($this->db_host,$this->db_user, $this->db_pass); 

그런 다음 당신은 "LIKE SHOW의 데이타베이스 '{$ this-> DB_NAME}'"에 대한 쿼리를 실행할 수 있습니다하거나, 다른 단지 가서 존재하지 않는 경우 데이터베이스를 만듭니다.

$ok = $this->mysqli->query("CREATE DATABASE IF NOT EXISTS {$this->db_name}"); 

그런 다음 새 데이터베이스를 생성하거나 이미 존재 여부, 당신은 여전히 ​​준비해야한다는 기본 데이터베이스와 데이터베이스 :

$ok = $this->mysqli->query("USE {$this->db_name}"); 

난 당신이 할 것이라고 의견에 동의 프로덕션 사이트에 대한 이러한 불필요한 오버 헤드. PHP 스크립트를 실행하기 전에 데이터베이스를 작성하고 모든 요청에 ​​대해 데이터베이스가 있는지 테스트하지 않아야합니다. 그러나 나는 이것이 단지 운동을위한 것이라는 진술을 이해합니다.

0
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
$this->mysqli = mysqli_connect($this->db_host,$this->db_user, $this->db_pass); 

$res = $this->mysqli->query("SHOW TABLES LIKE '$this->db_name'"); 
if ($res->fetch_row()) 
{ 
    $this->mysqli->select_db($this->db_name); 
} else { 

} 
-1
 
    $con = mysqli_connect('localhost', 'root', ''); 

    $q = mysqli_query($con, 'SHOW DATABASES'); 

    $dbName = 'dbname'; 
    $dbExists = false; 

    while ($row = mysqli_fetch_assoc($q)){ 
     if($row['Database'] == $dbName){ 
      $dbExists = true; 
      break; 
     } 
    }