这是关于编程PHP时可能遇到的警告,错误和通知的一些答案,并且不知道如何修复.这也是社区Wiki,因此邀请每个人参与添加和维护此列表.
Stack Overflow上经常弹出诸如"已发送标头"或"调用非对象成员"之类的问题.这些问题的根本原因总是一样的.因此,这些问题的答案通常会重复,然后显示OP在他/她的特定情况下要改变哪一行.这些答案不会为网站添加任何价值,因为它们仅适用于OP的特定代码.具有相同错误的其他用户不能轻易地从中读取解决方案,因为它们过于本地化.这很难过,因为一旦你理解了根本原因,修复错误是微不足道的.因此,该列表试图以一般的方式解释解决方案.
如果您的问题已被标记为重复,请在下面找到您的错误消息并将修复程序应用于您的代码.答案通常包含进一步调查的链接,以防单独的一般答案不清楚.
如果您想贡献,请添加您的"收藏"错误消息,警告或通知,每个答案一个,简短说明它意味着什么(即使它只是突出显示其手册页的术语),可能的解决方案或调试方法和现有问答的清单.此外,随时改善任何现有的答案.
另外,请参阅
在控制页面上:
<?php
include 'pages/db.php';
$results = mysql_query("SELECT * FROM sidemenu WHERE `menu_id`='".$menu."' ORDER BY `id` ASC LIMIT 1", $con);
$sidemenus = mysql_fetch_object($results);
?>
Run Code Online (Sandbox Code Playgroud)
在浏览页面上:
<?php foreach ($sidemenus as $sidemenu): ?>
<?php echo $sidemenu->mname."<br />";?>
<?php endforeach; ?>
Run Code Online (Sandbox Code Playgroud)
错误是:
注意:尝试在第22行的C:\ wamp\www\phone\pages\init.php中获取非对象的属性
你能修好它吗?我不知道发生了什么.
我们的php日志中偶尔会出现非常奇怪的错误:Trying to get property of non-object.
这个确切的错误似乎是由$shortName
以下if语句中的成员访问引起的:
class MyLocaleWrapper extends SomeOtherClass {
…
protected static $system = NULL;
public static function getSystemLocale() {
if (self::$system === NULL) {
self::$system = new self();
debug(self::$system);
self::$system->rfcName = SYSTEM_LOCALE_RFCNAME;
self::$system->shortName = strtolower(Locale::getRegion(self::$system->rfcName));
if (self::$system->shortName == '') {
self::$system->shortName = strtolower(self::$system->rfcName);
}
…
# in another file:
class SomeOtherClass {
…
public function __construct() {
# Some documentation about features that have been
# removed from the constructor, but …
Run Code Online (Sandbox Code Playgroud) 我正在使用以下类来自动加载我的所有类.这个类扩展了核心类.
class classAutoloader extends SH_Core {
public function __construct() {
spl_autoload_register(array($this, 'loader'));
}
private function loader($class_name) {
$class_name_plain = strtolower(str_replace("SH_", "", $class_name));
include $class_name_plain . '.php';
}
}
Run Code Online (Sandbox Code Playgroud)
我在__construct()
我的核心类中实例化该类:
public function __construct() {
$autoloader = new classAutoloader();
}
Run Code Online (Sandbox Code Playgroud)
现在我希望能够在loader类中实例化对象,如下所示:
private function loader($class_name) {
$class_name_plain = strtolower(str_replace("SH_", "", $class_name));
include $class_name_plain . '.php';
$this->$class_name_plain = new $class_name;
}
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误,这样调用$core-template
:
require 'includes/classes/core.php';
$core = new SH_Core();
if (isset($_GET['p']) && !empty($_GET['p'])) {
$core->template->loadPage($_GET['p']);
} else {
$core->template->loadPage(FRONTPAGE);
}
Run Code Online (Sandbox Code Playgroud)
错误: …
我正在使用PHP中的一个小型MVC框架进行练习.但是,PHP似乎不喜欢我的Controller类.该类包含一个加载视图的加载器实例:
abstract class Controller
{
public $load;
function __construct($load)
{
$this->load = $load;
}
abstract public function index();
}
Run Code Online (Sandbox Code Playgroud)
从那里,我可以覆盖所有控制器的控制器.对于instace,我的索引控制器:
class Index extends Controller
{
public function index()
{
$this->load->view("hello_world");
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我创建它时:
require 'Controller.php';
require 'Load.php'
require 'controllers/Index.php';
$i = new Index(new Load());
$i->index();
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
PHP Fatal error: Call to a member function view() on a non-object in /var/www/controllers/Index.php on line 7
Run Code Online (Sandbox Code Playgroud)
你能帮助我吗?我知道我在构造函数中设置了load,而load类确实有一个名为view的方法,那为什么它会给我这个错误呢?另外:加载等级,只是为了好的措施
class Load
{
public function view($filename, $data = null)
{
if(is_array($data)) extract($data); …
Run Code Online (Sandbox Code Playgroud) 我有一个在视图中创建的登录表单.然后在我的控制器中我试图加载我的模型,但似乎没有加载.在stackoverflow上查了几个答案,几乎每个人都说自动加载模型,导入数据库库等.我做到了,但我仍然得到错误
Fatal error: Call to a member function model() on a non-object in C:\xampp\htdocs\\project\application\controllers\login.php on line 11
A PHP Error was encountered
Severity: Notice
Message: Undefined property: Login::$load
Filename: controllers/login.php
Line Number: 11
Run Code Online (Sandbox Code Playgroud)
login_view
<?php
$loginEmail = array('placeholder' => "Email", 'name' => "loginEmail");
$loginPassword = array('placeholder' => "Wachtwoord", 'name' => "loginPassword");
$loginSubmit = array('name' => "loginSubmit", 'class' => "btn", 'value' => "Inloggen");
$loginForgot = array('name' => "loginForgot", 'class' => "link", 'value' => "Wachtwoord vergeten?");
echo form_open('login/login', array('class' => 'grid-100 formc')); …
Run Code Online (Sandbox Code Playgroud) 致命错误:在线上的非对象上调用成员函数query():$ result = $ conn-> query($ sql)或die(mysqli_error());
谁知道什么是错的以及如何解决它?
<?php
function dbConnect($usertype, $connectionType = 'mysqli') {
$host = 'localhost';
$db = 'phpsols';
if ($usertype == 'read') {
$user = 'psread';
$pwd = '123';
} elseif ($usertype == 'write') {
$user = 'pswrite';
$pwd = '123';
} else {
exit('Unrecognized connection type');
}
if ($connectionType == 'mysqli') {
return new mysqli($host, $user, $pwd, $db) or die ('Cannot open database');
} else {
try {
return new PDO("mysql:host=$host;dbname=$db", $user, $pwd);
} catch (PDOException …
Run Code Online (Sandbox Code Playgroud) 我正在使用simple_html_dom
,我有问题抓住一个div
与下面指定的类名是code!
<?php
include 'simple_html_dom.php';
$html='
<div class="user-info ">
<div class="user-action-time">
answered <span title="2016-06-27 20:01:45Z" class="relativetime">Jun 27 at 20:01</span>
</div>
<div class="user-gravatar32">
<a href="/users/25355/david-mulder"><div class="gravatar-wrapper-32"><img src="https://www.gravatar.com/avatar/09e3746cf7e47d4b3b15f5d871b91661?s=32&d=identicon&r=PG" alt="" width="32" height="32"></div></a>
</div>
<div class="user-details">
<a href="/users/25355/david-mulder">David Mulder</a>
<div class="-flair">
';
echo $html->find('div[class=user-details]',0);
?>
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么我收到错误调用字符串中的成员函数find()
谢谢!
我用以下代码创建了一个用户类:
<?php
require_once("database.php");
class User {
public $id;
public $username;
public $password;
public $first_name;
public $last_name;
public static function find_all() {
return self::find_by_sql("select * from users");
}
public static function find_by_id($id=0) {
global $database;
$result_array=self::find_by_sql("Select * from users where id={$id} limit 1");
if (!empty($result_array)) {
return array_shift($result_array);
} else {
return FALSE;
}
}
public function find_by_sql($sql="") {
global $database;
$result_set=$database->query($sql);
$object_array=array();
while ($row=$database->fetch_array($result_set)) {
$object_array[]=self::instantiate($row);
}
return $object_array;
}
public function full_name() {
if (isset($this->first_name)&& isset($this->last_name)) {
return $this->first_name." …
Run Code Online (Sandbox Code Playgroud) MVC返回fetch_array/object结果的类
Run Code Online (Sandbox Code Playgroud)class DbDriver{ private $connection; private $query; private $result; public function connect() { $host = 'localhost'; $user = ''; $password = ''; $database = ''; $this->connection = mysql_connect($host, $user, $password); $this->connection = mysql_select_db($database); return TRUE; } public function disconnect() { $this->connection->mysql_close(); return TRUE; } public function prepare($query) { $this->query = $query; return TRUE; } public function query() { if (isset($this->query)) { $this->result = $this->connection->mysql_query($this->query); return TRUE; } return FALSE; } public function fetch($type = 'object') { if (isset($this->result)) { switch …