Php 使一段代码在函数和类中工作

Php 使一段代码在函数和类中工作,php,mysql,Php,Mysql,displayCharityList()中的代码基本上是有效的。我决定把代码放在那个函数里,把那个函数放在一个类里,然后试着通过调用它来让它工作 不知何故,它没有从数据库中提取数据。查询在函数内部工作,但在_构造中不工作 谁能告诉我我做错了什么 多谢各位 <?php // Connection setup class charity { public $h; function __construct () { $c = new PDO('my

displayCharityList()中的代码基本上是有效的。我决定把代码放在那个函数里,把那个函数放在一个类里,然后试着通过调用它来让它工作

不知何故,它没有从数据库中提取数据。查询在函数内部工作,但在_构造中不工作

谁能告诉我我做错了什么

多谢各位

<?php 
// Connection setup


class charity {
public $h;

        function __construct () {
            $c = new PDO('mysql:host=localhost;dbname=seafarer_v2','seafarer_user','supp0rt1243');
            $h = $c->query('SELECT * FROM mnwg_charities')->fetchAll(PDO::FETCH_ASSOC);
            $this->$h = $this->h;
            $this->displayCharity = $this->displayCharityList();
        }


    Public function displayCharityList(){

        echo "<table><tr><th>Name</th><th>Contact</th><th>Post code</th><th>Phone</th><th>Website</th><th>Email</th></tr>";
            foreach ($this->h as $r){

                      echo "<tr><td>";
                      echo $r['Name'];
                      echo "</td>";
                      echo "<td>";
                      echo $r['Contact'];
                      echo "</td>";
                      echo "<td>";
                      echo $r['Postcode'];
                      echo "</td>";
                      echo "<td><div class=\"phone\">";
                      echo "<img src=\"http://m.intertrustgroup.com/images/icon_phone.png\" style=\"margin-right:.5em\">{$r['Phone']}</br>";
                        if($r['Fax']){  echo "<img src=\"http://www.sliksvn.com/gfx/icon_fax.gif\" style=\"margin-right:.5em\">{$r['Fax']}";}
                      echo "</div></td>";
                      echo "<td>";
                      echo "<a href=\"{$r['Website']}\" target=\"_blank\"> Visit Website </a>";
                      echo "</td>";
                      echo "<td>";
                      echo "<a href=\"mailto:{$r['Email']}\">Send Email</a>";
                      echo "</td></tr>";

            }
           echo "</table>";
     }
 }


?>

<?php
$hola = new charity();
echo $hola->displayCharity(); 
?>
尝试删除括号

class charity

class charity () //which is wrong

类不是移除方括号的函数

将类名大写是一个好习惯。


 <?php
 $hola = new charity();
 echo $hola->displayCharity(); //this line no needed
 ?>
第二行不需要,因为您调用的函数在构造函数本身中。。 所以不用再打电话了。。。
然后检查您的查询是否正常工作…

一些指针,因为db连接与charity类无关,但查询需要它,您可以将连接传递给该类,这称为依赖项注入。否则,在类的每次初始化时,它都会查询数据库,如果您要访问另一个不需要该查询的方法,则不需要查询数据库。 另外,您的
echo
ing和not
return
ing也可以从方法返回,但是您需要将对方法的调用放在您想要放置的位置。从该方法返回,然后在需要放置的位置使用单个回显更容易。希望能有帮助

<?php 

class charity {

    function __construct (PDO $con) {
        $this->con = $con;
    }

    private function get_charities(){
        return $this->con->query('SELECT * FROM mnwg_charities')->fetchAll(PDO::FETCH_ASSOC);
    }

    public function displayCharityList(){

        $return = "<table><tr><th>Name</th><th>Contact</th><th>Post code</th><th>Phone</th><th>Website</th><th>Email</th></tr>";
        foreach ($this->get_charities() as $r){
            $return .= "<tr><td>".$r['Name']."</td>";
            $return .= "</td>";
            $return .= "<td>";
            $return .= $r['Contact'];
            ...
            ...
        }
        $return .= "</table>";
        return $return;
    }
}

$con = new PDO('mysql:host=localhost;dbname=seafarer_v2','seafarer_user','supp0rt1243');

$hola = new charity($con);

echo $hola->displayCharity();
?>


thx,已删除。当查询在函数内部时有效,但当它在构造函数中时无效。如果我将查询放在内部,但外部的连接仍然不起作用。。我只是将C声明为$this-C,并将查询放在函数中