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