使用PDO从db获取数据

时间:2015-07-17 08:00:53

标签: php mysql pdo

我是PDO的新手,我在本网站的高级用户的建议下使用它。 我正在尝试使用pdo从我的表中获取数据,使用while,这样我就可以获得所有数据"有组织的"。

我的查询正在运行,但出于某种原因,我甚至无法转储它。

继承我的代码:

$sql = $conn->query("SELECT id, nivel, tipo, titulo, texto, ativa FROM account.quests_faq WHERE ativa='YES' ORDER BY nivel DESC");
        while($row = $conn->fetch(PDO::FETCH_ASSOC)){
            if ($tipo=='main'){
                echo '<li><a href="index.php?s=quest_info&id='$row['id']'"><font color="green">Nivel '$row['nivel']' - '$row['titulo']'</font></a></li><br>';
            }else{
                echo '<li><a href="index.php?s=quest_info&id='$row['id']'"><font color="red">Nivel '$row['nivel']' - '$row['titulo']'</font></a></li><br>';
            }
        }

所以,在简历中。 我有一个表格,一些文字和一个id。 我想从中获取这些数据并回复它。

希望你能帮助我,对不起有疑问。

编辑1:

$username = 'sssss';
        $password = 'sssss';
        $conn = new PDO('mysql:host=xxxxxxxx;dbname=account', $username, $password);
            $sql = "SELECT id, nivel, tipo, titulo, texto, ativa FROM account.quests_faq WHERE ativa='YES' ORDER BY nivel DESC";
            $stmt = $conn->query($sql);
            while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
                 echo '<li><a href="index.php?s=quest_info&id='.$row['id'].'"><font color="green">Nivel '.$row['nivel'].' - '.$row['titulo'].'</font></a></li><br>';
            }else{
                echo '<li><a href="index.php?s=quest_info&id='.$row['id'].'"><font color="red">Nivel '.$row['nivel'].' - '.$row['titulo'].'</font></a></li><br>';
            }
        }

3 个答案:

答案 0 :(得分:2)

好吧,建议你给错了。

使用,但学习 在使用之前,您必须学习 有许多关于PDO的教程(虽然它们都是糟糕的),但至少你可以从那里学习正确的语法

$(document).ready(function () {
    $.ajaxSetup({
        beforeSend: function () {
            $('#spinner').show()
        },
        complete: function () {
            $('#spinner').hide()
        },
        error: function () {
            $('#spinner').hide()
        }
    });
});

您还必须为PDO启用错误报告。

是的,正如在另一个答案中所说,你的PHP语法也是错误的。您也应该学习它,而不是将随机代码行拼凑在一起,然后让其他人为您修复它。

从不太复杂的语法开始,从没有装饰的回显单个变量开始。并在每个帖子中提出一个问题。至于PDO部分,你已经得到了答案

答案 1 :(得分:0)

尝试使用foreach循环。循环完成后,您实际上可以在整个文件的任何位置使用$arrRows数组!一位资深网络开发人员告诉我,这是一种更好的方法。

$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    foreach($rows as $key => $arrRows){
         echo $arrRows['COLLUMN_NAME_HERE'];
    }

这是一个演示函数,它将使用PDO

从表中选择值
function showPost($uID){
        global $numRecords, $dbConnection, $stmt;
        connect(); //Run connect function (../connections/connections.php)

        $sqlStr = "SELECT user_post.*, user.name, user.avatar FROM user_post JOIN user ON user_post.uID = user.uID WHERE user_post.uID = ".$uID. " ORDER BY post_time DESC";
        //Run Query
        try
        {
            $stmt = $dbConnection->query($sqlStr);
            if($stmt === false)
            {
                die("Error executing the query: $sqlStr");
            }
        }
        catch(PDOException $error)
        {
            //Display error message if applicable
            echo "An error occured: ".$error->getMessage();
        }
        $numRecords = $stmt->rowcount();


        //Close the databaase connection
        $dbConnection = NULL;
    }

如果您有任何疑问,请告诉我

答案 2 :(得分:-1)

您使用的是连接变量conn而不是查询变量sql来获取查询结果。

$sql = $conn->query("SELECT id, nivel, tipo, titulo, texto, ativa FROM account.quests_faq WHERE ativa='YES' ORDER BY nivel DESC");
while($row = $sql->fetch(PDO::FETCH_ASSOC)){
if ($tipo=='main')
    echo '<li><a href="index.php?s=quest_info&id='$row['id']'"><font color="green">Nivel '$row['nivel']' - '$row['titulo']'</font></a></li><br>';
else
    echo '<li><a href="index.php?s=quest_info&id='$row['id']'"><font color="red">Nivel '$row['nivel']' - '$row['titulo']'</font></a></li><br>';
}

或者您可以使用Prepared Statements

进行类似操作
$sql = $conn->prepare("SELECT id, nivel, tipo, titulo, texto, ativa FROM account.quests_faq WHERE ativa='YES' ORDER BY nivel DESC");
$sql->execute();
while($row = $sql->fetch(PDO::FETCH_ASSOC)){
    if ($tipo=='main')
        echo '<li><a href="index.php?s=quest_info&id='$row['id']'"><font color="green">Nivel '$row['nivel']' - '$row['titulo']'</font></a></li><br>';
    else
        echo '<li><a href="index.php?s=quest_info&id='$row['id']'"><font color="red">Nivel '$row['nivel']' - '$row['titulo']'</font></a></li><br>';
}