您絕對必須確保用戶的輸入是可用的,而不是黑客攻擊或錯誤。所以,首先你檢查輸入,然後如果沒關係,你創建一個數據庫。
這是假設您在表單中添加action =「post」。我不喜歡把輸入放到「get」中,因爲那時你的變量是URL的一部分,有些人可能會嘗試在那裏設置書籤。
if(isset($_POST['databasename'])) { //this lets us know the form has posted
// 1. Check for acceptable name
$name = $_POST['databasename'];
$name = strtolower($name); //all lowercase (makes things easier to deal with)
$name = preg_replace("/[^a-z]/", '', $name); //get rid of things that aren't letters
if($name != '') {
// 2. Create the database
$mysqli = new mysqli('localhost', 'my_user', 'my_password');
if ($mysqli->connect_error) {
throw new Exception("Connect Error ($mysqli->connect_errno) $mysqli->connect_error");
}
$query = "CREATE DATABASE `$name`";
$mysqli->query($query);
if($mysqli->errno) {
throw new Exception("Error creating database: $mysqli->error");
// I am pretty sure this is enough to catch the error of the database already existing
}
echo "Database $name created.";
} else {
throw new Exception("Invalid name");
}
}
如果我是你,我會把它放在try-catch中來捕捉異常並處理它們。
你確定你不想創建一個TABLE,或者也許只是一行有關該用戶的相關數據?爲每個用戶創建一個完整的數據庫是不尋常的。 – gibberish
想象一下,1000+用戶,即使是100-500。我希望你有一個自動化的方法來創建將與表,維護等等一起的代碼等。---創建關係表,而不是數據庫。你會在工作中接受你的腋窩。我當然希望你知道你在做什麼。 –