2

我正在尝试从 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);

?>
4

3 回答 3

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`)
        )
于 2012-10-27T14:21:56.367 回答
0

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

实际上有多个错误:

  1. 你有EXIST而不是EXISTS
  2. 您使用了单引号 ( ' ) 而不是 ` 标记
  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`)  
          )
    
于 2012-10-27T14:26:28.990 回答
0

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

if(!mysqli_query($conn, $sql) { die("The query ".$sql." failed: ".mysqli_eror }
于 2012-10-27T14:29:23.707 回答