0

我对 PHP 和 OOP 很陌生,我一直在使用 PDO 类来连接和检索我的 MYSQL 数据库中的信息。以下是相关文件的摘录:

歌词类.php

<?php 
class lyrics{

public $con;
public $kill;
public function __construct(connection $con){

    $this->con = $con->con;     
}

public function getLyricsFromURL($lyricsid){
    $results;

    $getlyrics = $this->con->prepare("SELECT * FROM `lyrics` WHERE lyrics_id = :lyricsid");
    $getlyrics->bindParam(':lyricsid',$lyricsid,PDO::PARAM_INT);
    $getlyrics->execute();
    $results = $getlyrics->fetchAll(PDO::FETCH_OBJ);


    foreach ($results as $result) {

        echo $result->lyrics_content;


    }

}

索引.php:

<?php
include 'inc/header.php';
include 'libs/connection.class.php';
include 'libs/lyrics.class.php';

$conn = new connection();
$lyrics = new lyrics($conn);

$lyrics->getLyricsFromURL(55);


?>

<h1><?php echo $lyrics->result->lyrics_title;?></h1>

其他: 另一个文件中有一个连接类,但我不会在这里显示它,只知道连接有效。

问题:*我遇到的问题是我想从歌词类中的 **getLyricsFromURL()方法中回显单个结果列,我已经尝试过,但它不起作用。

这样做的正确方法是什么?

提前致谢。

4

1 回答 1

0

该方法getLyricsFromURL()设置为返回元素数组,但您将返回值作为单个元素引用,试试这个:

public function getLyricsFromURL($lyricsid){

    // This isn't necessary
    //$results;

     // Better to use $stmt as the variable here, obviously this is subjective
     // but will serve you better when you are working on other stmt objects
     $stmt = $this->con->prepare("SELECT * FROM `lyrics` WHERE lyrics_id = :lyricsid");

     $stmt->bindParam(':lyricsid', $lyricsid,PDO::PARAM_INT);
     $stmt->execute();

     $results = $stmt->fetchAll(PDO::FETCH_OBJ);

     return $results;
}

...

// Instatiate our lyrics object
$lyric = new lyrics($conn);

// Make request for lyrics associated to row #55 and store results in local var
$lyrics = $lyric->getLyricsFromURL(55);

// Notice we are referencing the first element of the array
<h1><?php echo $lyrics[0]->lyrics_title;?></h1>
于 2012-07-24T23:38:48.677 回答