【问题标题】:PHP MySQL - Error: No Database selectedPHP MySQL - 错误:未选择数据库
【发布时间】:2014-03-25 04:39:12
【问题描述】:

我正在尝试读取和写入数据库。这是我到目前为止的代码:

$mysql = mysqli_connect("example.com", "johndoe", "abc123"); // replace with actual credidentials
$sql = "CREATE DATABASE IF NOT EXISTS dbname";
if (!mysqli_query($mysql, $sql)) {
    echo "Error creating database: " . mysqli_error($mysql);
}
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_close($mysql);
$mysql = mysqli_connect("example.com", "johndoe", "abc123", "dbname"); // replace with actual credidentials
$sql = "CREATE TABLE IF NOT EXISTS Users(ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(ID), username CHAR(15), password CHAR(15), email CHAR(50))";
if (!mysqli_query($mysql, $sql)) {
    echo "Error creating table: " . mysqli_error($mysql);
}
$sql = "INSERT INTO Customers(username, password, email) VALUES(" . $username . ", " . $password . ", " . $email . ")";
if (!mysqli_query($mysql, $sql)) {
    echo "Error: " . mysqli_error($mysql);
}
mysqli_close($mysql);

但是,当我尝试运行它时,它有一个错误:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' , )' at line 1

谁能告诉我如何解决这个问题?

【问题讨论】:

  • 你必须在创建表之前选择数据库..

标签: php mysql create-table


【解决方案1】:

check syntax of mysqli,它需要4个参数。您还必须提供数据库名称。

$link = mysqli_connect("myhost","myuser","mypassw","my_db");

【讨论】:

    【解决方案2】:

    首先检查mysqli_select_db是否返回false然后创建数据库。

    试试这样:

     $mysql = mysqli_connect("example.com", "johndoe", "abc123") or die(mysqli_connect_error()); // replace with actual credidentials
    
    if (!mysqli_select_db($mysql,'hardestgame_accounts')) {
     $sql = "CREATE DATABASE IF NOT EXISTS hardestgame_accounts";
     if (!mysqli_query($mysql, $sql)) {
        echo "Error creating database: " . mysqli_error($mysql);
     }
    }
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    $sql = "CREATE TABLE IF NOT EXISTS Users(ID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(ID), username CHAR(15), password CHAR(15), email CHAR(50))";
    if (!mysqli_query($mysql, $sql)) {
        echo "Error creating table: " . mysqli_error($mysql);
    }
    mysqli_close($mysql);
    

    这是一个很好的答案:Php mysql create database if not exists

    【讨论】:

    • mysqli_select_db() 函数不存在。
    • 这不是我做的吗?
    • @Oliver:检查这一行if (!mysqli_select_db($mysql,'hardestgame_accounts'))
    • @Awland Liton 哈哈。它确实存在。我也很怀疑,但 www.php.net/mysqli_select_db 解析为“mysqli_select_db 不存在。最接近的匹配项:...”好吧...谁从 php.net 中删除了 beta 标记?! :)
    • @Oliver:你试过这个吗?
    【解决方案3】:

    您在 mysqli_connect() 调用中缺少数据库

    $link = mysqli_connect("hostname","username","password","database") or die("Error " . mysqli_error($link));
    

    【讨论】:

      【解决方案4】:

      尝试在数据库连接和表创建之间使用mysql_select_db

      另外,mysql_ 已弃用,请改用mysqli_

      【讨论】:

        【解决方案5】:

        显然答案就在你的错误中。您没有选择任何数据库。使用这个函数时mysqli_connect指定你要连接的数据库。

        这是函数的语法:http://www.w3schools.com/Php/func_mysqli_connect.asp

        1) 在应用程序之外创建数据库

        2) 用您要选择的数据库指定 mysqli_connect。

        您还可以使用另一个名为 mysqli_select_db 的函数。您可以在这里找到 sytanx:http://www.w3schools.com/php/func_mysqli_select_db.asp

        正如评论中已经说明的那样,如果您在本地运行,您还必须将 : "example.com" 替换为您的 IP 地址,如果您没有更改端口,则将其替换为 127.0.0.1:3306您使用您的数据库帐户安装了 mysql 数据库/“johndoe”,您可以使用您的 root 帐户密码 DEFAULT : "" 将其更改为“root”/“abc123”。

        祝你好运!

        【讨论】:

          【解决方案6】:

          对 MYSQL 保留字使用 ` 反引号... 您的表名是 MYSQL 的保留字... 更改您的表名。

          【讨论】:

            猜你喜欢
            • 2010-10-25
            • 1970-01-01
            • 2012-01-20
            • 1970-01-01
            • 2017-11-03
            • 1970-01-01
            • 2011-02-16
            • 1970-01-01
            相关资源
            最近更新 更多