私は最近、PHPスクリプトを使って新しいデータベースの作成を自動化しようとするといくつかの問題を抱えてきました。 基本的に、このスクリプトは新しいログインユーザー名を取得し、データベースを作成します(そして、後でphpスクリプトを使っていくつかのテーブルとデータを挿入します)。 以前はデータベースを手動で作成する必要がありましたが、今は自動化する必要があります。"。"でmysqlデータベースを作成する(PHPを使用して)
問題は、Web GUIのphpadmin "new database"機能を使用して新しいデータベースを作成し、 "test1.siteA"、 "userb.siteB"のような名前を付けることができたことです。
しかし、私はPHPスクリプトで同じことをしようとしたので、私は最後の "エコー"から "あなたの構文に誤りがあります"
主なパラメータは次のとおりです。
$name = $user->username;
$servernm = 'localhost';
$usnm = 'user';
$pasd = 'user';
$dbname = $name;
$dbname .= '.site';
私は(それはまだ私が1行に$ dbnameのを組み合わせた場合でも存在)コードから.site一部を削除すると、エラーが消えてしまうことを、私を見つけました。
私がオンラインで見つけた記事によると、MySQLは "。"のような特殊文字を許可していないようです。データベース名に含めること。
".site"はphpMyadminで手動で追加できますが、php/mysqliスクリプトでは許可されていません。次のように
いっぱいスクリプトがある(私はそれが大きく向上することができると確信している、そうですに関するいかなる提案も歓迎します):
<?php
define("_VALID_PHP", true);
require_once(APPPATH. "/libraries/init.php");
include (BASEPATH . "/database/DB_temp.php");
$row = $user->getUserData();
$name = $user->username;
$servernm = 'localhost';
$usnm = 'user';
$pasd = 'user';
$dbname = $name;
$dbname .= '.site';
// Create connection
$conn = mysqli_connect($servernm, $usnm, $pasd);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Check if DB exist
$sql = "SELECT count(SCHEMA_NAME) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$dbname'";
$check = mysqli_query($conn,$sql)
or die("Connection failed: " . mysqli_connect_error());
while($row = mysqli_fetch_array($check,MYSQLI_NUM))
{
$dbval = $row[0];
}
if ($dbval == "0")
{
$createsql = "CREATE DATABASE '$dbname' ";
}
if ($dbval == "1")
{
$createsql = "SELECT count(SCHEMA_NAME) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '$dbname'";
}
if (mysqli_query($conn, $createsql)) {
Echo "Completed. DBVAL= " .$dbval ;
}
else
{
echo "Error creating database: " . mysqli_error($conn);
}
?>
PHPバージョン:5.6.18 phpmyadminの:4.5.4.1 Ubuntu 14.04
私はここでいくつかの投稿エラーがあった場合にお詫び申し上げます。それらについて私に知らせてください。私はできる限りそれを修正しようとします。どんな助けでも大歓迎です!
自分で気にしない場合は、そのような奇妙な名前でコードをサポートする必要がある他の開発者を考えてください。 –
@aynberありがとう!それはかなり状況を説明します。私はそれを前に気付かなかった。今すぐ質問を終了します。 –
@YourCommonSenseまた、私がそれをどのように変更すべきかを提案しておけば、非常に助言になるでしょう。私は構造全体を変更することができるかどうかは分かりませんが、その一部分でしか作業していないのですが、本当に変更が必要な場合は、間違いなく試みます。 –