create table if not exist PDO不工作

create table if not exist PDO not working

提问人:wiggleysquiggley 提问时间:11/6/2023 最后编辑:Shadowwiggleysquiggley 更新时间:11/6/2023 访问量:44

问:

我正在使用 VScode 使用 MAMP 在 phpmyadmin 中创建一个表。没有弹出错误说它没有连接到phpmyadmin,但是当我尝试查看表是否已创建时,它没有。这是我的代码:

<?php
    $dsn = 'mysql: host = localhost; port = 3306; dbname = the_db';
    $username = 'root';
    $password = 'root';

    try {
        $pdo = new PDO($dsn, $username, $password);
    }
    catch (PDOException $e) {
        die('Connection error' . $e->getMessage());
    }

    $sql = "CREATE TABLE IF NOT EXISTS my_table(
        id INT(7) NOT NULL AUTO_INCREMENT,
        name VARCHAR(255) NOT NULL,
        email VARCHAR(255) NOT NULL,
        PRIMARY KEY(id)
    )";

    $pdo_statement = $pdo->prepare($sql);

    try {
        $pdo_statement->execute();
    }catch (PDOException $e) {
        echo "error in creating table " . $e->getMessage();
        die();
    }

    echo "Connection successful";

    $pdo_statement->close();

    $pdo = NULL;
?>

我尝试在这里查看与此问题相关的其他问题的解决方案,但我找不到有效的方法。

php mysql pdo

评论

2赞 Bill Karwin 11/6/2023
请不要将MySQL服务器称为“phpmyadmin”。Phpmyadmin 是一个 Web 客户端,而不是服务器;您自己的PHP代码不会“连接到phpmyadmin”。不正确地使用术语会让读者感到困惑。
0赞 Mike 'Pomax' Kamermans 11/6/2023
当然,请记住,“它不起作用”从来都不是问题描述。它有什么作用?有错误吗?在你的帖子中显示这些内容。 (如果没有,您是否配置了PHP来隐藏错误?重新打开它们:您遇到什么错误?

答:

2赞 Bill Karwin 11/6/2023 #1

从 DSN 中删除空格:

不對:

$dsn = 'mysql: host = localhost; port = 3306; dbname = the_db';

正确:

$dsn = 'mysql:host=localhost;port=3306;dbname=the_db';

严格来说,您需要删除的只是 和 之间的空格。尽管开发人员通常以空格开头架构名称,但这样做是合法的,因此不会将 dbname 修剪为空格。=the_db

有关详细信息,请参阅 https://www.php.net/manual/en/ref.pdo-mysql.connection.php

此外,该类没有方法。当语句超出范围时或在请求结束时,应自动关闭并清理该语句。PDOStatementclose()