PDO查询不仅从一个表中选择数据

时间:2016-04-29 05:21:46

标签: php mysql pdo

我的PDO查询不是仅从一个表中选择数据,所有其他表都可以正常工作。

选择查询:

<?php
header('Content-type: application/json');
require_once 'class.user.php';
$user_home = new USER();

$user_id = $_SESSION['userSession'];

$profile = $user_home->runQuery("SELECT * FROM user_profiles");
$profile->execute(array(":user_id"=>$user_id));
$profile_info = $profile->fetchAll(PDO::FETCH_ASSOC);

echo json_encode(array("profile_info" => $profile_info));
?>

如果我将选择更改为:$profile = $user_home->runQuery("SELECT * FROM tbl_users");

工作正常。

数据库连接:

<?php
session_start();
class Database
{

    private $host = "localhost";
    private $db_name = "hoidja";
    private $username = "root";
    private $password = "";
    public $conn;

    public function dbConnection()
    {

        $this->conn = null;    
        try
        {
            $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   
        }
        catch(PDOException $exception)
        {
            echo "Connection error: " . $exception->getMessage();
        }

        return $this->conn;
    }
}
?>

这是我要查询的表格:

enter image description here

这是唯一一个没有选择任何数据的表 - (有3行)。 可能是什么原因?

2 个答案:

答案 0 :(得分:1)

忘记写where clause

您的查询将是

SELECT * FROM user_profiles WHERE user_id =:user_id

否则无法执行此

$profile->execute(array(":user_id"=>$user_id));

<强>更新

根据以下消息,由于äö etc.

之类的特殊问题而导致问题发生

在连接字符串中使用array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"))以避免此

答案 1 :(得分:0)

您需要在代码中的标题('Content-type:application / json'); 行上方添加 session_start();