← Back to PHP Course | Chapter 11: Database | Lesson 10 of 21

PHP MySQL Create DB

एक database खुद -- top-level container जो आपकी सारी tables रखता है -- PHP से programmatically बनाया जा सकता है, सिर्फ एक database admin tool के through नहीं। एक बार आपके पास MySQL server से connection हो (ज़रूरी नहीं कि अभी कोई specific database select हो), mysqli के through एक CREATE DATABASE SQL statement चलाना exactly यही करता है।
Syntax
php
$sql = "CREATE DATABASE IF NOT EXISTS database_name";

if (!mysqli_query($conn, $sql)) {
    echo "Error: " . mysqli_error($conn);
}

CREATE DATABASE से एक Database बनाना

MySQL से एक connection जो कोई particular database specify नहीं करता फिर भी एक बिल्कुल नई CREATE DATABASE statement चला सकता है -- mysqli_query($conn, "CREATE DATABASE dbName") वह SQL command भेजता है और अगर connecting user के पास permission हो तो database बना देता है।

उदाहरण: Creating a Database with CREATE DATABASE

php
<?php
// mysqli_query($conn, "CREATE DATABASE dbName") on a real MySQL server
$db = new SQLite3('app.db');
echo "Database file created";
?>

IF NOT EXISTS से Errors से बचना

CREATE DATABASE IF NOT EXISTS dbName statement को एक से ज़्यादा बार चलाने के लिए safe बनाता है -- database पहले से exist करने पर एक error raise करने के बजाय, MySQL बस कुछ नहीं करता और script को continue करने देता है, जो कई बार चल सकने वाली setup scripts के लिए उपयोगी है।

उदाहरण: Avoiding Errors with IF NOT EXISTS

php
<?php
// CREATE DATABASE IF NOT EXISTS dbName -- safe to run more than once
$db = new SQLite3('app.db'); // creates the file only if it doesn't already exist
echo "Ready, whether or not it already existed";
?>

Creation Errors Check करना

mysqli_error($conn) उस connection पर सबसे हाल के error का एक description return करता है -- एक CREATE DATABASE call (या किसी query) के बाद इसे check करना आपको specifically बताता है कि कोई operation क्यों fail हुआ, जैसे insufficient privileges या एक invalid database name।

उदाहरण: Checking for Creation Errors

php
<?php
// Create a new `SQLite3` instance with ':memory:', stored in `$db`
$db = new SQLite3(':memory:');
$db->exec("CREATE TABLE test (id INTEGER)");
// Check whether `$db->lastErrorCode()`
if ($db->lastErrorCode()) {
    // Print `"Error: " . $db->lastErrorMsg()` to the output
    echo "Error: " . $db->lastErrorMsg();
// Otherwise, run this branch
} else {
    // Print "No errors" to the output
    echo "No errors";
}
?>

Create करने के बाद एक Database Select करना

एक database बनाना automatically इसे current connection के लिए active नहीं बना देता -- या तो एक अलग USE dbName statement चलाएँ, या एक fresh connection खोलें जो database को सीधे इसके चौथे mysqli_connect() argument की तरह नाम दे।

उदाहरण: Selecting a Database After Creating It

php
<?php
// USE dbName; -- or pass the db name as mysqli_connect()'s 4th argument
$db = new SQLite3('app.db'); // SQLite selects the file directly on connect
echo "Active database selected";
?>

एक Database के लिए Character Set और Collation चुनना

CREATE DATABASE dbName CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci creation time पर database के लिए default character encoding और sorting rules set करता है -- utf8mb4 modern recommended choice है क्योंकि यह emoji सहित Unicode की पूरी range support करता है।

उदाहरण: Choosing Character Set and Collation for a Database

php
<?php
// CREATE DATABASE dbName CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
echo "utf8mb4 supports the full Unicode range, including emoji";
?>
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. पहले से exist करने वाली किसी database के same name से एक database बनाने की कोशिश करना, जो एक error raise करता है जब तक आप specifically SQL में IF NOT EXISTS से check न करें।
  2. पर्याप्त privileges न रखने वाले connection से CREATE DATABASE चलाना, क्योंकि इसे elevated database-creation rights चाहिए जो everyday application user के पास अक्सर नहीं होते।
  3. यह भूल जाना कि एक database बनाना automatically इसे select नहीं करता -- आपको अभी भी उस database को specify करने वाला एक अलग USE statement या एक fresh connection चाहिए।
चैप्टर सारांश
  • CREATE DATABASE dbName एक नई, empty database बनाता है, एक मौजूदा connection पर mysqli_query() के through चलाया जाता है।
  • किसी database को बनाने के लिए इस्तेमाल किया गया connection पहले किसी particular database को select करने की ज़रूरत नहीं रखता, क्योंकि CREATE DATABASE server level पर operate करता है।
  • IF NOT EXISTS CREATE DATABASE statement को अगर database पहले से exist करे तो error दिए बिना दोबारा चलाने के लिए safe बनाता है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.