【问题标题】:Cannot reach objects functions in php无法在 php 中访问对象函数
【发布时间】:2011-04-21 15:20:52
【问题描述】:

这是类定义,

     public function __construct($icontext, $ititle, $iorgs_id, $icreated_at) {
        $this->context = $icontext;
        $this->orgs_id = $iorgs_id;
        $this->created_at = $icreated_at;
        $this->title = $ititle;

    }


    //put your code here
    //crud fonksiyonlari burda basliyor
    public function create(){
        $createann = mysql_query("INSERT INTO anns(context, title, orgs_id, created_at) VALUES('$this->context', '$this->title', $this->orgs_id, '$this->created_at'");
        if($createann) return "Duyuru Başarıyla Eklendi"; else return "Duyuru Eklenemedi";
    }
    public function read($id){
        $readann = mysql_query("SELECT * FROM anns WHERE id = $id");

        $context = mysql_result($readann,0, "context");
        $title = mysql_result($readann,0, "title");
        $orgs_id = mysql_result($readann,0, "orgs_id");
        $created_at = mysql_result($readann,0, "created_at");

        $ann = new ann($context, $title, $orgs_id, $created_at);

        return $ann;
    }
    public function update($id, $context, $title){
        $updateann = mysql_query("UPDATE anns SET context = '$context', title = '$title' WHERE id = $id");
        if($updateann) echo "Duyuru başarıyla güncellendi"; else echo "Duyuru güncellenemedi";
    }
    public function delete($id){
        $deleteann = mysql_query("DELETE FROM anns WHERE id = $id");
        if($deleteann){
            echo "Duyuru başarıyla silindi";}
        else{
            echo "Duyuru silinemedi";}
    }
    //crud fonksiyonlari burda bitiyor
}

?>

这是我们从中创建对象的函数,

<?php
    require_once '../include/functions.php';
    require_once '../db_classes/ann.php';
    $sonuc = login_check();

    $iann = new ann(guvenlik($_POST['context']),guvenlik($_POST['title']), $orgs_id, 1231232);
    $iann.create();

    if($ann) echo "alallaal";
    if(!$ann) echo "sadfasfdsdf";

?>

最后,这是我们得到的错误日志:D

PHP Fatal error:  Call to undefined function create() in /var/www/pe/actions/newann.php on line 7" while reading response header from upstream

我们是php新手,所以这一定是我们造成的一个非常简单的错误,但我们无法找出问题所在。谢谢

【问题讨论】:

  • 注意。您的 sql 代码很容易受到 sql 注入的影响
  • 不,不是,它是用“guvenlik”功能检查注射的。不过谢谢提醒:)
  • 我不知道 guvenlik 做了什么,甚至是什么意思……不过,$orgs_id 看起来没有转义。 (为什么函数的调用者要处理转义?这应该发生在函数内部,你可以控制它。在调用函数之前必须转义只是意味着你有一天会忘记转义)与所有这些无关:您不能在字符串中使用$this-&gt;var 并期望php 将其替换为实际值,您必须使用${this-&gt;var}

标签: php class function object


【解决方案1】:
$iann->create();

不是

$iann.create();

。是连接运算符

【讨论】:

    【解决方案2】:

    你必须在php中使用-&gt;来调用方法:

    $iann->create();
    

    点表示法在.net 和java 中使用,但在php 中不使用。 php 中的 . 运算符连接两个字符串,因此 php 可能会将您的 $iann 对象转换为字符串,然后尝试将其与函数 create() 的返回值连接起来,该函数确实存在于全局命名空间中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      • 2020-10-10
      • 2016-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多