2015-09-27 80 views
0

有人可以解释吗有人可以解释为什么它不工作?

为什么这不起作用?

<?php 
class category 
{ 
    function __construct() 
    { 
     $con = new mysqli("localhost", "root", "", "whatever"); 
    } 

    function show_all() 
    { 
     $sql = "SELECT id_kategori, nama_kategori FROM kategori"; 
     $stmt = $con->prepare($sql); 
     $stmt->execute(); 
     $stmt->bind_result($id, $cat); 
     while($stmt->fetch()) 
     { 
      echo "<td>$id</td>"; 
      echo "<td>$cat</td>"; 
      echo "<td>Update</td>"; 
      echo "<td>Delete</td>"; 
     }; 
     $stmt->close(); 
    } 

} 
?> 

但是,这项工作?

<?php 
class category 
{ 

    function show_all() 
    { 
     $con = new mysqli("localhost", "root", "", "whatever"); 
     $sql = "SELECT id_kategori, nama_kategori FROM kategori"; 
     $stmt = $con->prepare($sql); 
     $stmt->execute(); 
     $stmt->bind_result($id, $cat); 
     while($stmt->fetch()) 
     { 
      echo "<td>$id</td>"; 
      echo "<td>$cat</td>"; 
      echo "<td>Update</td>"; 
      echo "<td>Delete</td>"; 
     }; 
     $stmt->close(); 
    } 

} 
?> 

没有构造,它的工作,与构造它不。

有人可以告诉我,告诉我,教我如何在一个构造中包含sql连接的正确方式?我还是新的,并且顺便学习。

+2

可能是因为它已经是一个构造http://php.net/manual/en/mysqli.construct.php –

+1

虽然这在技术上是正确的,但OP应该知道为什么特定的范围变量很重要,因为看起来他们想学习如何构造 – Jesse

回答

3

这是因为范围界定。 $con变量应定义为专门用于该类,而不仅仅局限于__construct

当你定义$con__construct里面你是观察这个在本地使用的功能__construct内,而不是在类本身

考虑下面的代码

<?php 
class category 
{ 
    private $con; 

    function __construct() 
    { 
     $this->con = new mysqli("localhost", "root", "", "whatever"); 
    } 

    function show_all() 
    { 
     $sql = "SELECT id_kategori, nama_kategori FROM kategori"; 
     $stmt = $this->con->prepare($sql); 
     $stmt->execute(); 
     $stmt->bind_result($id, $cat); 
     while($stmt->fetch()) 
     { 
      echo "<td>$id</td>"; 
      echo "<td>$cat</td>"; 
      echo "<td>Update</td>"; 
      echo "<td>Delete</td>"; 
     }; 
     $stmt->close(); 
    } 

} 
?> 
+0

添加“this “给我错误结果 Noti c:\ xampp \ htdocs \ whatever \ login \ admin \ sql \ category.php on line 6 致命错误:无法访问C:\ xampp \ htdocs \ whatever \ login \ admin中的空属性\ sql \ category.php on line 6 :( – user2977799

+1

请参阅完整的代码,我将变量定义为私有类 – Jesse

+0

等待,它在我复制后粘贴它们:D多个thnx:D – user2977799

2

$ con是不是一个变量在上面的类访问:试试这个:

<?php 
class category 
{ 

    private $con = NULL; 

    function __construct() 
    { 
     $this->con = new mysqli("localhost", "root", "", "whatever"); 
    } 

    function show_all() 
    { 
     $sql = "SELECT id_kategori, nama_kategori FROM kategori"; 
     $stmt = $this->con->prepare($sql); 
     $stmt->execute(); 
     $stmt->bind_result($id, $cat); 
     while($stmt->fetch()) 
     { 
      echo "<td>$id</td>"; 
      echo "<td>$cat</td>"; 
      echo "<td>Update</td>"; 
      echo "<td>Delete</td>"; 
     }; 
     $stmt->close(); 
    } 

} 
?> 

看看这里的文档: http://php.net/manual/en/language.oop5.php 和查找PHP范围: http://php.net/manual/en/language.variables.scope.php

此外,如果您有问题,总是添加到您的代码: 这会告诉你的变量是不确定的:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
+0

这是正确的。 Thnx的答案。 :) – user2977799

相关问题