提问人:wiggleysquiggley 提问时间:11/6/2023 最后编辑:Shadowwiggleysquiggley 更新时间:11/6/2023 访问量:44
create table if not exist PDO不工作
create table if not exist PDO not working
问:
我正在使用 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;
?>
我尝试在这里查看与此问题相关的其他问题的解决方案,但我找不到有效的方法。
答:
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。
此外,该类没有方法。当语句超出范围时或在请求结束时,应自动关闭并清理该语句。PDOStatement
close()
评论