mysql不推荐使用pdo查询问题

时间:2013-10-08 16:23:45

标签: mysql pdo deprecated

下面的代码可以正常使用mysql,但是当我尝试

将其转换为PDO,它不会查询任何内容。很长一段时间以来,我一直在这,似乎没有工作。

有人可以帮助我

working mysql_deprecated.php

<?php
    require('config.php');
        $user = $_SESSION['log']['username'];
        $sql  = "SELECT * FROM users WHERE username='$user' OR friend='$user' AND status = 'accepted'";
    $result = mysql_query($sql);
    while($row = mysql_fetch_assoc($result))
    {

    echo 'fine';

    if ($row['friend'] != $user) { $friend = $row['friend']; } else { $friend = $row['username']; }

    $query  = "SELECT *,UNIX_TIMESTAMP() - date_created AS TimeSpent FROM post WHERE 
    (username = '$friend' OR username = '$user') ORDER BY post_id DESC LIMIT 5";
    $result = mysql_query($query);

    while($row = mysql_fetch_assoc($result))

    {   

    echo 'data retrieved successfully';
    }
    }

    ?>


    pdo.php

    <?php
    $db = new PDO (
        'mysql:host=localhost;dbname=testing', 
        'root', // username
        '' // password
    );
    $user = $_SESSION['log']['username'];
    $sql = $db->prepare('
                SELECT * FROM users
                WHERE username= ?  OR friend = ? and status = accepted');


    $sql->bindParam(1, $user, PDO::PARAM_STR);
    $sql->bindParam(2, $user, PDO::PARAM_STR);
    $sql->execute();

     while($row = $sql->fetch()) 
    {

    echo 'fine';

    if ($row['friend'] != $user) { 
    $friend = $row['friend']; 
    } else { 
    $friend = $row['username']; 
    }


    $query = $db->prepare('
        SELECT *,UNIX_TIMESTAMP() - date_created AS TimeSpent FROM post WHERE 
    (username = :username OR username = :username1) ORDER BY post_id DESC LIMIT 5

    ');
            $query->execute(array(
                ':username' => $friend,
                              ':username1' => $user )); 
                     $result = $query->fetch();

                      while ($row = $result->fetch()) 

                           {
    echo 'data retrieved successfully';
    }
    }

    ?>

非常感谢

1 个答案:

答案 0 :(得分:0)

尝试更改此行:

$sql = $db->prepare('
                SELECT * FROM users
                WHERE username= ?  OR friend = ? and status = accepted');

为:

$sql = $db->prepare("
                SELECT * FROM users
                WHERE username= ?  OR friend = ? and status = 'accepted'");