【问题标题】:SELECT command denied to user ''@'localhost' for table 'tasks'SELECT 命令拒绝用户 ''@'localhost' 用于表 'tasks'
【发布时间】:2016-12-03 09:17:42
【问题描述】:

即使已向 localhost 提供了所有权限,我仍不断收到该错误。我可以从相同的用户名/密码插入数据,但它不会检索它。

我已经尝试过注释config.inc.php中的行并执行GRANT的方法。

下面是我的代码

<?php
        $servername = "localhost";
        $username = "root";
        $password = "";
        $dbname = "to_do_list";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        } 

        $query = "SELECT `task`, `date_of_task`, `time_of_task`,`id`  FROM `to_do_list`.`tasks`;"; 

       $result = mysql_query($query) or die($query."<br/><br/>".mysql_error());


      while($row = mysql_fetch_array($result)){         
        echo "<tr>".
        "<td>" . $row['task'] . "</td>".
        "<td>" . $row['date_of_task'] . "</td>".
        "<td>" . $row['time_of_task'] . "</td>".
        "<td> <button value=\"Edit\" class=\"btn btn-warning\"> </td>".
        "<td> <button value=\"Edit\" class=\"btn btn-warning\"> </td>".
        "</tr>";  
        }
        mysql_close();
    ?>

谢谢。

【问题讨论】:

  • 您是否收到来自 $conn->connect_error 的错误?
  • btw.: 您可以在 FROM 子句中省略数据库名称。数据库由连接预选。
  • @Robert 我此时得到错误 $result = mysql_query($query) 或 die($query."

    ".mysql_error());我已经通过删除它然后执行代码进行了检查。效果很好
  • @u-nik 收到错误“未选择数据库”,这就是添加它的原因。
  • 你的权利。你必须使用mysqli_select_db。反正不是这里的话题。

标签: php sql phpmyadmin xampp


【解决方案1】:

我确实在您的查询末尾看到了一个额外的分号:

$query = "SELECT ... FROM `to_do_list`.`tasks`;"; 

您使用的 MySQL 也已弃用。

【讨论】:

  • 我也试过删除然后执行它。得到同样的错误。
  • 该;在语句的末尾是必要的,因为 php.
【解决方案2】:

更改为以下代码解决了我的问题。我认为这可能是由于使用 query 作为变量的冲突。

$sql = "SELECT task,date_of_task,time_of_task,id  FROM to_do_list.tasks;";
$result = $conn->query($sql) or die($sql."<br/><br/>".mysql_error());


if ($result-> num_rows > 0) {
    // output data of each row
    while ($row = $result->fetch_assoc())

【讨论】:

  • 命名变量 $query 或 $sql 对 PHP 没有任何影响。
【解决方案3】:

您正在打开与 MySQLi 的连接:

$conn = new mysqli($servername, $username, $password, $dbname);

那么你正在使用 mysql_* 函数:

$result = mysql_query($query) or die($query."<br/><br/>".mysql_error());

while($row = mysql_fetch_array($result)){   

将您的代码更改为仅使用MySQLi functions,错误就会消失。

【讨论】:

    猜你喜欢
    • 2017-12-25
    • 2013-08-07
    • 2013-06-26
    • 2013-08-27
    • 2022-10-16
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    相关资源
    最近更新 更多