如何通过与数据库的一个连接将mysql结果存储在不同的单个变量中?

时间:2016-11-05 21:27:20

标签: php mysql sql arrays variables

我目前正在开展个人项目,我需要你的帮助。 经过大量的研究,我似乎找不到适合我问题的解决方案(可能是因为我不是很好的php开发人员 - 我还在学习)。

好的,我需要从我的数据库中获取3个帖子,并将每个标题存储在各个变量中。我需要他们是个人,因为我想在我的网站的不同部分使用它们。 我设法做到了这一点,但只是对数据库做了三个不同的查询,我认为它不好。有没有办法将一个查询发送到数据库并立即将它们存储在不同的变量中? 我尝试用数组做这个,虽然我已经足够接近,但我似乎没有这个工作。

这是我的代码:

try {
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 0,1');
    $sslider_title1='';
    while($row = $stmt->fetch()){
        $sslider_title1 = $row['postTitle'];
    }
}   
catch(PDOException $e) {
    echo $e->getMessage();
}
try {
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 1,2');
    $sslider_title2='';
    while($row = $stmt->fetch()){
        $sslider_title2 = $row['postTitle'];
    }
}
catch(PDOException $e) {
    echo $e->getMessage();
}
try {
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 2,3');
    $sslider_title3='';
    while($row = $stmt->fetch()){
        $sslider_title3 = $row['postTitle'];
    }
}
catch(PDOException $e) {
    echo $e->getMessage();
}

所以为了让这个运行一个查询我必须做

try {
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 0,3');
    $sslider_title1='';
    $sslider_title2='';
    $sslider_title3='';
    while($row = $stmt->fetch()){
        \\ This is the part that I can't seem to solve :P
    }
} 

2 个答案:

答案 0 :(得分:3)

请不要使用具有此类名称的变量。 您需要的是array

$titles = array();
try {
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 0,3');
    while($row = $stmt->fetch()){
        $titles[] = $row['postTitle'];
    }
} 

然后在您的代码中,您可以使用

echo $titles[0];
echo $titles[1];
echo $titles[2];

为你们每个人的头衔。

答案 1 :(得分:1)

如果您不想将其存储在变量中,这可能是您的答案:

try {
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 0,3');
    $sslider_title1='';
    $row = $stmt->fetch()
    $sslider_title1 = $row['postTitle'];

    $sslider_title2='';
    $row = $stmt->fetch()
    $sslider_title3 = $row['postTitle'];

    $sslider_title3='';
    $row = $stmt->fetch()
    $sslider_title3 = $row['postTitle'];

}

如果您还不知道会得到多少结果,您仍然可以使用循环:

try {
    $stmt = $db->query('SELECT postTitle FROM blog_posts ORDER BY postID DESC limit 0,3');

    for($i=0;$row = $stmt->fetch();$i++){
        $sslider_title{$i}=$row['postTitle'];
    }
}

但我真的建议你使用数组。