php:将我准备好的语句结果放入数组中

时间:2014-09-09 16:35:03

标签: php while-loop prepared-statement

这是我的代码:

if ($stmt = $mysqli->prepare ( "SELECT album_no, album_name FROM $albumTable WHERE b_username=?  parent_name=? LIMIT 100" ))
        {

        $stmt->bind_param ( "ss", $a_owner,$p_name); // bind parameters for markers
        $stmt->execute ();
        $stmt->bind_result ($album_no,$album_name ); // bind result variables

        $stmt->fetch (); /* fetch value */

             if (isset ( $album_no ))
                {
                $array = array();
                $array['album_no']          = $album_no;
                $array['album_name']        = $album_name;
                }

        /* close statement */
        $stmt->close ();
        }

/* close connection */
$mysqli->close ();

并且它有效,唯一的问题是它只返回一行...我知道我需要一段时间()来浏览其他行但我不知道在使用准备时将其放在哪里陈述:( 搜索我找到的文档" fetchAll()"但这似乎只适用于" PDO"我不知道PDO是什么:(

提前致谢

2 个答案:

答案 0 :(得分:2)

这可能就是你要找的东西:

$array = array();
while ($stmt->fetch()) 
{
    if (isset ($album_no))
    {
        $array['album_no'][]   = $album_no;
        $array['album_name'][] = $album_name;
    }
}

fetch()从准备好的语句中获取绑定变量的结果。一旦没有更多行要返回,fetch()将返回NULL并且循环体将不再被执行。

答案 1 :(得分:1)

你需要获取一个循环:

while($stmt->fetch()) {
    ... do stuff with your bound variables
}

一旦没有可用于获取的行,fetch()调用将返回false并终止while()循环。