【问题标题】:Querying a table from PHP (configuration file?)从 PHP 查询表(配置文件?)
【发布时间】:2015-12-10 00:16:39
【问题描述】:

我正在尝试为我的网站创建一些 php 页面。基本上,我想查询与我的网站连接的数据库的表,并能够从该表中存储/检索信息。

我已经购买了托管服务,据我所知,我已经在 phpMyAdmin 上正确设置了一个数据库。我还设置了访问用户名和密码(如数据库名称、服务器、用户名、密码)。

但是,我使用以下函数从我的表中查询。

function query(/* $sql [, ... ] */)
{
    // SQL statement
    $sql = func_get_arg(0);

    // parameters, if any
    $parameters = array_slice(func_get_args(), 1);

    // try to connect to database
    static $handle;
    if (!isset($handle))
    {
        try
        {
            // connect to database
            $handle = new PDO("mysql:dbname=" . DATABASE . ";host=" . SERVER, USERNAME, PASSWORD);

            // ensure that PDO::prepare returns false when passed invalid SQL
            $handle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
        }
        catch (Exception $e)
        {
            // trigger (big, orange) error
            trigger_error($e->getMessage(), E_USER_ERROR);
            exit;
        }
    }

    // prepare SQL statement
    $statement = $handle->prepare($sql);
    if ($statement === false)
    {
        // trigger (big, orange) error
        trigger_error($handle->errorInfo()[2], E_USER_ERROR);
        exit;
    }

    // execute SQL statement
    $results = $statement->execute($parameters);

    // return result set's rows, if any
    if ($results !== false)
    {
        return $statement->fetchAll(PDO::FETCH_ASSOC);
    }
    else
    {
        return false;
    }
}

当我尝试查询(“Select * From table”)之类的简单操作时,我收到以下错误消息

Fatal error: SQLSTATE[HY000] [1045] Access denied for user 'user'@'localhost' (using password: YES) in /home/user/includes/functions.php on line 142

请,任何帮助将不胜感激。我在网上看了看,好像有些论坛提到我需要按照这篇文章的建议检查我的配置文件:https://forums.cpanel.net/threads/error-link-to-database-cannot-be-established.394212/

编辑:我的计算机上没有 mySQL。我正在使用窗户。我在 cpanel 中的 phpMyAdmin 内部设置了数据库。

【问题讨论】:

  • 确保您创建的用户被授予访问数据库的权限。 (如果您创建用户,它不仅会起作用)。

标签: php mysql cpanel


【解决方案1】:

类似这样的:

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $handle->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}
$handle->close();

请参阅https://www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql授予用户权限部分

【讨论】:

  • 问题不在于显示数据。我在连接数据库时遇到问题。我认为是查询功能的问题还是我没有设置一些额外的配置文件?另外我正在使用Windows计算机。我也没有安装 mySQL
  • 哦,对不起,我不这么认为,我看到您拒绝访问用户 'user'@'localhost' 您确定该用户有权访问数据库 DATABASE 吗?您可以对 'root'@'%' 使用 show grants;看到这个
  • 您介意详细说明“显示赠款”的含义吗?我把这个命令放在哪里?
  • 我的电脑上没有mysql(我也在使用windows)。我相信我在 cpanel 下的 myphpadmin 中正确设置了权限。我授予了所有权限,包括更改、删除等。我仔细检查了登录详细信息,但仍然无效
  • 如果我看到您发布的错误消息,这显然意味着您的 mysql 登录不正确或您登录的用户没有对该特定数据库的正确权限。到目前为止,我没有看到任何其他问题。
猜你喜欢
  • 2018-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-12
相关资源
最近更新 更多