创造,回归,;在PHP中使用对象

创造,回归,;在PHP中使用对象,php,mysqli,Php,Mysqli,我有一套功能: 一个创建连接,另一个使用该函数进行不同类型的数据库交互 我正在检索错误 Call to undefined method mysqli::execute() 这说明我没有正确发送对象,我做了一些研究,但没有找到示例 <?php function con(){ $mysqli = new Mysqli("localhost","user","pass","image_blog"); if ($mysqli->connect_errno) { echo "Faile

我有一套功能:

一个创建连接,另一个使用该函数进行不同类型的数据库交互

我正在检索错误

Call to undefined method mysqli::execute()
这说明我没有正确发送
对象
,我做了一些研究,但没有找到示例

<?php
function con(){

$mysqli = new Mysqli("localhost","user","pass","image_blog");

if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}else{
    return $mysqli;
}};

function getAll(){

$mysqli = con();

$stmt = $mysqli->prepare("SELECT * FROM posts");
$stmt = $mysqli->execute();     <--- ERROR HERE
$stmt = $mysqli->get_result();
$stmt = $mysqli->close();

while($row = mysqli_fetch_array($stmt, MYSQL_ASSOC)) {
  echo "Username: " . $row["image"];
  echo "Username: " . $row["title"];
  echo "Username: " . $row["text"];
  echo "Username: " . $row["up"];
  echo "Username: " . $row["date"];
}
};
function anotherFunction(){

 }
 function yetAnotherFunction(){

 }
应该是

$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
$mysqli->close();
而不是

$stmt = $mysqli->execute();
$stmt = $mysqli->get_result();
$stmt = $mysqli->close();

请参阅(示例)。

您应该执行语句($stmt),而不是$mysqli

$stmt->execute()


在PUTR中也考虑使用PDO类,因为它使事情变得更容易了。

< P>我看到了你试图用MySQL实现连接函数。而不是从每个功能单独连接。正如Smith先生所提到的,您已声明变量
$stmt
如下:

$stmt = $mysqli->prepare('SELECT * FROM posts');
这是不正确的,因为准备好的语句不会返回要在变量中使用的数据,因此会出现错误

另一种方法是使用类,另一种更高级的方法是扩展mySQLi类

Class myClass{
    protected $dbh;
    public function __construct(){
        $this->dbh=new mysqli('','','','');
    }
    public function getAll(){
        $this->dbh->prepare('SELECT * FROM posts');
        $this->dbh->execute();
        $this->dbh->bind_result($image,$title,$text,$up,$date);
        while($this->dbh->fetch()){
            echo"Username:".$image;
            //and so on
        }
        $this->dbh->close();
    }
    public function anotherFunction(){
    }
    public function yetAnotherFunction(){
    }
}
如果以前没有使用过类,现在需要创建该类的实例:

$databaseUser = myClass();
要启动您的功能,请执行以下操作:

$databaseUser->getAll();