PDO mysql查询无法正常工作

时间:2013-12-19 00:59:09

标签: php pdo mysqli

由于某些原因,此查询无效。它不会抛出任何错误。如果我在传统的mysqli中使用它。它工作..我试图将我的SQL转换为pdo。

$conn = new PDO('mysql:dbname=test;host=localhost', 'root', 'root');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$user_id = is_numeric($_SESSION['user_id']) ? $_SESSION['user_id'] : die();
$stmt = $conn->prepare("SELECT * from posts WHERE user_id=:user_id ");
$stmt->bindParam(':user_id', $user_id);
$stmt->execute();

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$i=1;
if ($i=1) {
foreach ($rows as $row) {
if (($row["user_id"])==true){
echo $row["title"];
}  
}

1 个答案:

答案 0 :(得分:0)

这里有几个问题。首先,这......

  

$ user_id = is_numeric($ _ SESSION ['user_id'])? $ _SESSION ['user_id']:die();

太可怕了。我也没有看到session_start()(这可能是你问题的真正原因)。选择

之类的东西
session_start();

if (!(isset($_SESSION['user_id']) && is_numeric($_SESSION['user_id']))) {
    throw new Exception('Invalid user id in session');
}
$user_id = $_SESSION['user_id'];

现在进行结果集迭代......

$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);

foreach ($stmt as $row) { // this is possible because PDOStatement implements Traversable
    echo $row['title'];
}