如果不存在则创建表 PDO 不起作用

问题描述 投票:0回答:1

我正在使用 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 phpmyadmin mamp
1个回答
0
投票

从 DSN 中删除空格:

错误:

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

正确:

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

详情请参阅https://www.php.net/manual/en/ref.pdo-mysql.connection.php

此外,

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

© www.soinside.com 2019 - 2024. All rights reserved.