2016-08-28 26 views
-2

我店內的另一個文件調用db_function.php 所有SQL和這裏是代碼插入錯誤使PHP更OOP

<?php 
class DB_Functions 
{ 
    private $conn; 

    function __construct() 
    { 
     require_once'conn.php'; 
     $conn = mysqli_connect("localhost","root","","phpstmt"); 
    } 

    function __desturct() 
    { 
    } 

    public function add($tablename,$colname,$dataname) 
    { 
     $sql = "INSERT INTO ".$tablename." (".$colname.") VALUES (".$dataname.")"; 
     $result= mysqli_query(mysqli_connect("localhost","root","","phpstmt"), $sql); 
     return $result; 
    } 
} 
?> 

這裏是我的index.php的代碼中的接口

if(isset($_POST['btnsubmit'])) { 
    $dataphp = $_POST["data"]; 
    $datatwophp = $_POST["datatwo"]; 
    $colname = "data,datatwo"; 
    $dataname = "'$dataphp','$datatwophp'"; 
    $result = $db->add($tablename,$colname,$dataname); 
    //$sql = "INSERT INTO `table` (`data`,`datatwo`) VALUES ('$dataphp','$datatwophp')"; 
    if($result) { 
     echo "success"; 
    } else { 
     echo "WrongE: " . $result . "<br>" . mysqli_error($conn); 
    } 
} 

我不知道什麼是錯誤,因爲錯誤輸出只是一個WrongE,$結果一樣消失。

感謝和回答。

+2

從'mysqli_error添加的具體錯誤信息()'。還閱讀了參數綁定。 – mario

+0

請添加確切的錯誤信息,以便我們找出問題所在。 –

+0

ok,當'echo「錯誤:」。 $結果。 「
」。 mysqli_error($ result)',輸出是** mysqli_error()期望參數1爲mysqli,布爾在91行中給出C:\ xampp \ htdocs \ Phpstmt \ index.php **當echo出現時爲 –

回答

0

在行

echo "WrongE: " . $result . "<br>" . mysqli_error($conn); 

你沒有訪問DB_Functions屬性$conn。如果你願意,你可以將一個方法添加到您的DB_Functions

public function getConn() 
{ 
    return $this->conn; 
} 

,那麼你必須從構造

$conn = mysqli_connect("localhost","root","","phpstmt"); 

與此

$this->conn = mysqli_connect("localhost","root","","phpstmt"); 

替換該行,然後你需要更換這行代碼

echo "WrongE: " . $result . "<br>" . mysqli_error($conn); 

與此

echo "WrongE: " . $result . "<br>" . mysqli_error($db->getConn()); 

或者,如果你願意,你可以只添加一種特殊的方法爲DB_Functions類來獲取錯誤

public function getError() 
{ 
    return mysqli_error($this->conn); 
} 

,然後你可以以這種方式使用此方法類似

echo "WrongE: " . $result . "<br>" . $db->getError(); 

$result不會消失 - 當您嘗試將其作爲條紋回顯時,false值不會顯示NG。如果你嘗試例如該代碼

$test = false; 
$string = ':' . $test . ':'; 
echo $string; 

然後你會看到onle的::串上的輸出。

你的最後一類可以像這樣

<?php 
class DB_Functions 
{ 
    private $conn; 

    function __construct() 
    { 
     require_once'conn.php'; 
     $this->conn = mysqli_connect("localhost","root","","phpstmt"); 
    } 

    function __desturct() 
    { 
    } 

    public function add($tablename,$colname,$dataname) 
    { 
     $sql = "INSERT INTO ".$tablename." (".$colname.") VALUES (".$dataname.")"; 
     $result= mysqli_query(mysqli_connect("localhost","root","","phpstmt"), $sql); 
     return $result; 
    } 

    public function getError() 
    { 
     return mysqli_error($this->conn); 
    } 
} 
?> 

,然後你的index.php可以像這樣

if(isset($_POST['btnsubmit'])) { 
    $dataphp = $_POST["data"]; 
    $datatwophp = $_POST["datatwo"]; 
    $colname = "data,datatwo"; 
    $dataname = "'$dataphp','$datatwophp'"; 
    $result = $db->add($tablename,$colname,$dataname); 
    //$sql = "INSERT INTO `table` (`data`,`datatwo`) VALUES ('$dataphp','$datatwophp')"; 
    if($result) { 
     echo "success"; 
    } else { 
     echo "WrongE: " . $result . "<br>" . $db->getError(); 
    } 
} 
+0

感謝您的幫助,我解決了這個問題,當我在表內添加''tablename =「table」;' –