나는 최근에 PHP 스크립트로 새로운 데이터베이스 생성을 자동화하는 데 어려움을 겪고있다. 기본적으로 스크립트는 새 로그인 사용자 이름을 사용하여 데이터베이스를 만든 다음 나중에 PHP 스크립트를 통해 수행되는 일부 테이블과 데이터를 나중에 삽입합니다. 이전에는 데이터베이스를 수동으로 만들어야했지만 지금은 자동화해야합니다."."을 사용하여 mysql 데이터베이스 만들기 (PHP를 사용하여)
문제는 웹 GUI에서 phpadmin "새 데이터베이스"기능을 사용하여 "test1.siteA", "userb.siteB"와 같은 이름으로 새 데이터베이스를 만들 수있었습니다.
그러나 PHP 스크립트를 통해 동일한 작업을 시도 했으므로 마지막 "반향"에서 "구문에 오류가 있습니다 ..."라는 메시지가 나타납니다.
홈페이지 매개 변수는 다음과 같습니다 나는 오류가 한 번 나는 코드에서 .site 부품을 제거 사라질 것으로 나타났습니다
$name = $user->username;
$servernm = 'localhost';
$usnm = 'user';
$pasd = 'user';
$dbname = $name;
$dbname .= '.site';
(아직도 내가 1 개 라인에 $의 DBNAME을 결합 할 경우에도 존재한다).
내가 온라인에서 찾은 기사에 따르면, 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 우분투 14.04
여기에 게시 오류가 발생하면 사과드립니다. 그 (것)들에 관하여 저에게 시키십시오 그리고 나는 그것을 할 수있는 한 많이 고치려고 노력할 것입니다. 어떤 도움이라도 대단히 감사합니다!
자신을 신경 쓰지 않는다면 이상한 이름으로 코드를 지원해야하는 다른 개발자를 생각해보십시오. –
@aynber 감사합니다. 그것은 거의 상황을 설명합니다. 전에는 몰랐습니다. 지금 질문을 닫을 것입니다. –
@YourCommonSense 어떻게 변경해야하는지 제안하면 큰 도움이 될 것입니다. 내가 전체 구조를 변경할 수 있을지 확신 할 수는 없지만, 부분적으로 만 작업하고 있지만 실제로 변경해야한다면 확실히 시도 할 것입니다. –