【问题标题】:How to create a database using PHP and MySQL?如何使用 PHP 和 MySQL 创建数据库?
【发布时间】:2012-05-14 13:10:28
【问题描述】:

在这个create 函数中,我正在尝试创建一个数据库。但是,它无法创建并显示错误Error creating database: Access denied. 因此,这意味着存在连接并且它通过了第一次检查。然后当mysql_query 被调用时,它不会返回true。任何人都可以帮忙吗?

function create($dbName, $tbName, $fields, $types_sizes, $PK)
        {
            $sql = null;
            $con = mysql_connect("borg.cs.up.ac.za","username", "password");

            if (!$con)
            {
                die('Could not connect: ' . mysql_error());
            }
            else 
                {
                  if(mysql_query("CREATE DATABASE". $dbName, $con))
                    {
                        echo "Database created";
                        $dbExists = 1;
                    }
                   else
                    {
                        echo "Error creating database: " . mysql_error();
                        $dbExists = 0;
                    }
                   $i = 0;
                    if(($con)&&($bdExists = 1))
                    {
                        $sql . "CREATE TABLE " . $tbName . "(";
                        while($i < count($fields))
                        {
                            $sql . $fields[$i] . " " + $types_sizes[$i] . ",";
                            $i++;
                        }
                    if($PK != null)
                    {
                        $sql . "PRIMARY KEY (" . $PK .")";
                    }
                    }
                mysql_query($sql,$con);
                mysql_close($con);
            }
         }

【问题讨论】:

  • 您可能没有必要的权限在您连接到服务器的帐户上创建数据库。
  • 您也可以为单独的表在名称中设置前缀 ($dbName_.'tablename')
  • 使用 PhpMyAdmin 或 MySQL Workbench 创建数据库,然后通过代码创建表。您似乎没有创建数据库所需的权限。
  • 我确实拥有全部权限,所以这不是问题。我知道它与连接有关,而不是查询。
  • @Chris 错误消息准确地告诉您您没有权限。如果是连接问题,您将不会收到该消息。和mysql_* 被正式弃用。你应该学习mysqli 或更好的PDO

标签: php mysql database create-table


【解决方案1】:

试试这个。这是未经测试的。更改了代码中的一些行。

function create($dbName, $tbName, $fields, $types_sizes, $PK)
    {
        $sql = null;
        $con = mysql_connect("borg.cs.up.ac.za","username", "password");

        if (!$con)
        {
            die('Could not connect: ' . mysql_error());
        }
        else 
            {
    if(mysql_select_db($dbName))
                {
                    echo "Database selected";
                    $dbExists = 1;
                }
               else
                {
                    echo "Error creating database: " . mysql_error();
                    $dbExists = 0;
                }
               $i = 0;
                if(($con)&&($dbExists == 1))
                {
                    $sql = "CREATE TABLE " . $tbName . "(";
                    while($i < count($fields))
                    {
                        $sql .= $fields[$i] . " " + $types_sizes[$i] . ",";
                        $i++;
                    }
                if($PK != null)
                {
                    $sql .= "PRIMARY KEY (" . $PK .")";
                }
                }
            mysql_query($sql,$con);
            mysql_close($con);
        }
     }

【讨论】:

    【解决方案2】:

    你没有在行中给空间

    if(mysql_query("CREATE DATABASE". $dbName, $con)),请在“创建数据库->创建数据库.$dbname之后留空,否则会数据库+名称组合。

    【讨论】:

    • 此查询未在第一位运行,因为访问被拒绝。
    • 让用户运行一次,然后决定它是否工作。
    • 好的,所以@Gaurav Bansal。谢谢。少了一个空格。但是现在它给了我这个错误“创建数据库时出错:用户's11028786'@'%'对数据库'books'的访问被拒绝”,有什么想法吗?我必须有权访问,因为我在以前的功能中成功连接。
    • If you get an error such as Access denied for user 'monty'@'localhost' to database 'menagerie' when attempting to create a database, this means that your user account does not have the necessary privileges to do so. ----- mysql 开发指南。
    【解决方案3】:

    很简单,就这两个步骤

    $con = mysql_connect("localhost", "root", "password");
    
    mysql_select_db("database_name", $con);
    

    【讨论】:

    • 问题是关于通过代码创建数据库不连接和选择一个
    猜你喜欢
    • 2013-08-30
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2013-01-18
    相关资源
    最近更新 更多