无法使用php脚本创建表

时间:2014-07-15 17:55:20

标签: php mysql mysqli

这是我正在制作的剧本之一,但我无法弄清楚是什么错。     

$dbhost = "localhost";
$dbusername = "root";
$dbpassword = "";
$dbname = "str_academy";

$connect = mysqli_connect("$dbhost", "$dbusername", "$dbpassword");

if (!$connect) {
   echo("<div class='container'>");         
   echo("<div class='alert alert-danger'><strong>Warning! </strong>Couldn't create the         specified database</div>");
   echo("</div>");;
exit();
}else {
   echo("<div class='container'>");
   echo("<div class='alert alert-success'><strong>Success! </strong>Database connection established successfully</div>");
   echo("</div>");;
}

if ($connect) {
   $database_create = 'CREATE DATABASE str_academy';
   $database_query = mysqli_query($connect, $database_create);
if (!$database_query) {
echo("<div class='container'>");            
    echo("<div class='alert alert-danger'><strong>Warning! </strong>Couldn't create the specified database</div>");
    echo("</div>");
    exit();         
}else {
    echo("<div class='container'>");
    echo("<div class='alert alert-success'><strong>Success! </strong>Database : str_academy successfully created</div>");
    echo("</div>");
}
}

$database_select = mysqli_select_db($connect, "str_academy");

if (!$database_select) {
   echo "Select a database first";
}else {
   echo "Database Selected";
}
$contact_table_create = "CREATE TABLE contact_information (
contact_id INT NOT NULL AUTO_INCREMENT,
contact_name VARCHAR(255) NOT NULL,
contact_email TEXT NOT NULL,
phonenumber INT(11) REAL NULL,
message TEXT NOT NULL,
PRIMARY KEY(contact_id)
)";
$contact_table_query = mysqli_query($connect, $contact_table_create);

if (!$contact_table_query) {
   echo "Table not created";
}else {
   echo "Table created";
}   

?>

我已经创建了这个简单的测试脚本。除了没有创建表contact_information之外,一切似乎都运行得很好。任何人都可以帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:1)

此上下文中使用的关键字REAL引发语法错误:

  

您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以获得在&#39; REAL NULL附近使用的正确语法,   消息TEXT NOT NULL,   PRIMARY KEY(contact_id)   )&#39;在第5行

从查询中删除REAL(并在必要时将其替换为其他内容)可以解决您遇到的问题。

答案 1 :(得分:1)

phonenumber INT(11) REAL NULL,更改为phonenumber INT(11) NOT NULL,并查看其是否有效

答案 2 :(得分:0)

在phpmyadmin / innoDb中REAL变为double,所以我认为你需要替换REAL double DEFAULT。您的查询将如下:

CREATE TABLE contact_information (
    contact_id INT NOT NULL AUTO_INCREMENT,
    contact_name VARCHAR(255) NOT NULL,
    contact_email TEXT NOT NULL,
    phonenumber double DEFAULT NULL,
    message TEXT NOT NULL,
    PRIMARY KEY(contact_id)
)

答案 3 :(得分:0)

错误位于phonenumber INT(11) REAL NULL列。这应该是phonenumber INT(11) NOT NULL

答案 4 :(得分:-1)

输出mysqli错误消息。我怀疑用户&#34; root&#34;可能没有CREATE DATABASE权限。

if (!$database_query) {
    $error = mysqli_error($connect);
    echo("<div class='container'>");            
    echo("<div class='alert alert-danger'>{$error}</div>");
}