0

PHPでクラスを使用する方法を学んでいます

データベースに情報を挿入しようとしていますが、このエラーが発生します

致命的なエラー: C:\xampp\htdocs\kapa\classes\lol.php の 7 行目の未定義メソッド Produto::introduzirProduto() の呼び出し

接続コード:

<?php

class dbConnect{
private $db_host;
            private $db_user;  
            private $db_pass;  
            private $emp_db = "mydb";

            var $connection;
            var $db_select;
            var $result;
            var $row;

            function __construct(){
                $this->db_host = "localhost";
                $this->db_user = "root";
                $this->db_pass = "";
            }

            function connect(){
                $this->connection = mysql_connect($this->db_host, $this->db_user, $this->db_pass);   //create connection
                    checkErr($this->$connection);

                $this->db_select = mysql_select_db($this->emp_db, $connection);
                    checkErr($this->db_select);
            }
}

?>

形:

<?php
require_once 'introduzir.class.php';
?>
<form action="lol.php" method="POST" id="">
  <input type="text" name="id"/>
  <input type="submit" value="ok.." />
</form>

コードを挿入

<?php 
  require_once('conectar.php');

  class Produto  extends dbConnect {
        var $bd;
  }

     function Produto() {
        global $emp_db, $db_user, $db_pass, $db_host;
                $this->bd = new dbConnect();
                $this->bd->ligarBD($emp_db, $db_user, $db_pass, $db_host);
        }

        function introduzirProduto($id) {
            $sql = "INSERT INTO produto VALUES ('$id')";
            if($this->bd->executarSQL($sql)) return true;
            else return false;
        }


?>

<?php
require_once 'introduzir.class.php';

if($_REQUEST['id']!="") {

                            $produto = new Produto();
                            if($produto->introduzirProduto($_REQUEST['id'])) {

                                echo "Registo efectuado com sucesso !!!<br>";
                            } else {
                                echo "Problema encontado no Registo !!!<br>";
                            }


            } else {
                echo "ERRO: Deve introduzir a sua password...<br>";
            }

?>

何を変更する必要がありますか?

4

2 に答える 2

1

作成した Produto というクラスには関数がありません。$bd変数を定義してから、クラスの定義を終了しました。次のように、変数宣言の後の中括弧を削除して、関数の後に配置する必要があります。

<?php 
  require_once('conectar.php');

  class Produto  extends dbConnect {
        var $bd;

        function Produto() {
                global $emp_db, $db_user, $db_pass, $db_host;
                $this->bd = new dbConnect();
                $this->bd->ligarBD($emp_db, $db_user, $db_pass, $db_host);
        }

        function introduzirProduto($id) {
            $sql = "INSERT INTO produto VALUES ('$id')";
            if($this->bd->executarSQL($sql)) return true;
            else return false;
        }
   }

?>

補足として、大文字で始まる関数とそうでない関数がある場合は、より厳密な命名規則に従うようにしてください。たとえば、常に小文字で開始し、その後の単語は大文字を使用します。文字(2番目の機能と同様)

于 2013-11-09T16:54:07.167 に答える
0

関数およびProdutoの定義の前に、クラスの括弧を閉じました。今後同様のエラーが発生しないように、コードを適切にインデントすることを強くお勧めします。Produto()introdizirProduto()

<?php 
require_once('conectar.php');

class Produto  extends dbConnect {
    public $bd;

    function Produto() {
        global $emp_db, $db_user, $db_pass, $db_host;
        $this->bd = new dbConnect();
        $this->bd->ligarBD($emp_db, $db_user, $db_pass, $db_host);
    }

    function introduzirProduto($id) {
        $sql = "INSERT INTO produto VALUES ('$id')";
        if($this->bd->executarSQL($sql)) return true;
        else return false;
    }
}

//Rest of your code follows.
?>

PS : varPHP では非推奨です。使用しないでください。\

于 2013-11-09T16:54:44.450 に答える