执行SELECT查询返回false

时间:2018-01-13 07:12:02

标签: php mysql database

我有一个PHP网站,我在000webhost上传。它需要一个数据库来存储数据。但是当我尝试登录时它没有登录。当我检查连接时,结果证明连接正常。仍然无法访问数据库。所以我写了一个小脚本来检查数据库访问,但它失败了。我有一张名为歌曲的桌子,其中包含一些歌曲。

这是脚本:

<?php
    ob_start();

    session_start();
    $host = 'localhost';
    $user = 'xxxxxxx';
    $pass = 'xxxxxxx';
    $db = 'xxxxxxx';

    $timezone = date_default_timezone_set("Asia/Kolkata");

    $con = new PDO("mysql:host=$host;dbname=$db", $user, $pass); 

    if($con)
    {
        echo "Connection success";
        $query  = mysqli_query($con, "SELECT * FROM songs");
        if($query){
            $tb = mysqli_fetch_array($query);
            print_r($tb);
        }
        else {
            echo " failed db access";
        }
    }   
    else {
        echo " connection failed";
    }    
?>

出于安全原因,细节已隐藏。 上面的脚本给出了以下输出:

Connection success failed db access

2 个答案:

答案 0 :(得分:0)

您展示的输出具有误导性,failed db access。根据下面的代码,数据库已成功连接,并且您正在执行查询,它似乎没有执行,并且流向else块。

if($query){
// your code 
}
else {
   echo " failed db access";
}

你需要检查,

  1. 如果您使用的是相同的用户凭据并且可以访问该表。
  2. 如果存在相同的表格
  3. 如果您已在创建表的地方提供了正确的数据库详细信息。
  4. <强> ==更新==

    正如我之前提到的,用户可能没有足够的权限来访问songs表。要GRANT访问,您需要执行以下SQL

    GRANT ALL PRIVILEGES ON *.* TO '<username>'@'localhost; WITH GRANT OPTION;
    

答案 1 :(得分:0)

它不起作用,因为您使用PDO进行连接并使用mysqli进行查询。更改与mysqli的连接

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

或将您的查询更改为PDO

$query  = $con->query("SELECT * FROM songs");