使用php脚本为数据库创建表,不会工作?

时间:2012-10-27 14:13:49

标签: php

我正在尝试从php创建表到我的数据库。我有点试图建立一个社交网站,无论如何,我编写代码并正在工作,但新表不会在数据库中创建,我不知道代码似乎有什么问题。非常感谢帮助,谢谢!

<?php

    $host = "host";   
    $user = "user";
    $pswd = "password";
    $dbnm = "db";

    $conn = @mysqli_connect($host, $user, $pswd, $dbnm);
    if (!$conn)
        die ("<p>Couldn't connect to the server!<p>");

    $selectData = @mysqli_select_db ($conn, $dbnm);
    if(!$selectData)
    {
        die ("Database Not Selected");
    }

        $sql = "CREATE TABLE IF NOT EXIST 'friends' 
            (
            'friend_id' INT NOT NULL auto_increment, 
            'friend_email' VAR CHAR(20) NOT NULL,
            'password' VAR CHAR(20) NOT NULL,
            'profile_name' VAR CHAR(30) NOT NULL,
            'date_started' DATE NOT NULL,
            'num_of_friends' INT unsigned,
            PRIMARY KEY ('friend_id')
            )";

    $query_result = @mysqli_query($conn, $sql);


    mysqli_close($conn);

?>

3 个答案:

答案 0 :(得分:0)

首先,在调试脚本时,请在函数前删除“@”。他们会抑制警告,否则会迅速引导您发现错误。

您的create table语句有很多语法错误。尝试更正的 -

   CREATE TABLE IF NOT EXISTS `friends` 
        (
        `friend_id` INT NOT NULL auto_increment, 
        `friend_email` VARCHAR(20) NOT NULL,
         `password` VARCHAR(20) NOT NULL,
        `profile_name` VARCHAR(30) NOT NULL,
        `date_started` DATE NOT NULL,
        `num_of_friends` INT unsigned,
        PRIMARY KEY (`friend_id`)
        )

答案 1 :(得分:0)

您还需要在运行脚本时检查错误,因此要么关闭抑制(删除@符号),要么在运行后检查错误。

实际上存在多个错误:

  1. 您有EXIST而不是EXISTS
  2. 您使用单引号(')而不是`mark
  3. 您有VAR CHAR两个字,而不是正确的VARCHAR(一个字)

      CREATE TABLE IF NOT EXISTS  `friends`  
          (  
          `friend_id` INT NOT NULL auto_increment,   
          `friend_email` VARCHAR(20) NOT NULL,  
          `password` VARCHAR(20) NOT NULL,  
          `profile_name` VARCHAR(30) NOT NULL,  
          `date_started` DATE NOT NULL,  
          `num_of_friends` INT unsigned,  
          PRIMARY KEY (`friend_id`)  
          )
    

答案 2 :(得分:0)

您在CREATE TABLE中有错误。你应该写CREATE TABLE tablename IF NOT EXISTS(EXISTS应该以S结尾)。我还建议您不要在每次查询之后抑制错误并打印错误,如下所示:

if(!mysqli_query($conn, $sql) { die("The query ".$sql." failed: ".mysqli_eror }