0
<?php
try {
  $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
  $sql = $DBH->exec("
    CREATE TABLE `store_config` (
    store_name varchar(30),
    last_update date)
    ");
} catch (PDOException $e) {
  echo "Could not connect to database.";
  $DBH = null;
}
?>

没有抛出 PDOException,可能存在 SQL 错误,但我不知道如何检索该错误,并且当我使用 phpMyAdmin 检查数据库时,没有创建表。我做错什么了?

谢谢阅读。

编辑: 当我直接在 phpMyAdmin 中执行相同的 SQL 代码时,它给出了权限被拒绝错误...

1142 - 为表 'store_config' 拒绝用户'$user'@'$my_ip' 的 CREATE 命令

我很困惑,因为当我使用 web 主机 web 表单创建用户时,它没有给我授予任何权限的选项,而只是让这个用户成为数据库所有者 - 这是我必须做的吗?

编辑:

我给了我的用户帐户“DBO 访问权限”,它现在可以工作了(表已创建)。

感谢您的意见。

4

2 回答 2

1

试试这个。它应该会给你你正在寻找的错误,它会告诉你发生了什么。

<?php
try {
  $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
  $sql = $DBH->exec("
    CREATE TABLE `store_config` (
    store_name varchar(30),
    last_update date)
    ") or die(print_r($DBH->errorInfo(), true));
} catch (PDOException $e) {
  echo "Could not connect to database.";
  $DBH = null;
}
?>
于 2012-04-11T21:28:44.120 回答
0

您需要找到一种方法,从您运行代码的机器向您的用户授予创建权限。用户可能只有来自 localhost 的权限,因此您必须将代码上传到服务器并在那里运行才能获得权限。

于 2012-04-11T21:19:36.953 回答