【问题标题】:Why won't this PHP/SQL create the table?为什么这个 PHP/SQL 不会创建表?
【发布时间】:2012-04-11 21:17:28
【问题描述】:
<?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 - 用户 '$user'@'$my_ip' 拒绝表 'store_config' 的 CREATE 命令

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

编辑:

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

感谢您的 cmets。

【问题讨论】:

  • 如果您只是将 SQL 放入 MySQL 中,它就可以工作,所以它必须是它没有连接或者您的 dbname 不是 MySQL 上实际数据库的名称,或者该用户没有权限到数据库。
  • @thezboe 请在我的帖子中查看编辑 - 我现在有一个错误(权限被拒绝)

标签: php mysql sql pdo


【解决方案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;
}
?>

【讨论】:

  • +1 $DBH-&gt;errorInfo(),谢谢。 @NathanielFord 请查看带有错误的更新问题
【解决方案2】:

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

【讨论】:

  • 其实你可能不需要准备它。只是通常我这样做的方式。
  • 感谢您的回答。我试过了,但它仍然不会创建任何表。
猜你喜欢
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 2021-08-09
  • 1970-01-01
  • 2017-06-19
  • 2012-01-27
相关资源
最近更新 更多