所以我的朋友刚刚改变了我的php,所以我使用了mysqli,经过对我的代码的轻微修改,我仍然收到: 致命错误:在第44行的C:\ wamp \ www \ web2 \ database.php中调用未定义的方法mysqli :: fetch_object()
<?php
class Database
{
public $server = "localhost";
public $database = "database";
public $user = "root";
public $password = "";
public $row;
public $result;
public $sqlExtra = " ORDER BY firstname ASC";
public $dbLocalHost;
//call connection method upon constructing
public function __construct(){
$this->createConnection();
}
//connection to the database
public function createConnection()
{
$this->dbLocalhost = new mysqli($this->server, $this->user, $this->password, $this->database)
or die("could not connect:");
//mysql_select_db($this->database)
//
// or die("Could not find the database: ".mysql_error());
}
//execute query string
public function query($queryString)
{
$result = $this->dbLocalhost->query($queryString);
while($row = $this->dbLocalhost->fetch_object($result))
{
echo "<tr><td>".$row[0]."</td><td>".$row[1]."</td><td>".$row[2]."</td></tr>";
}
}
public function newRecord($fname, $lname)
{
$firstname = $fname;
$lastname = $lname;
$this->emptyCheck($firstname, $lastname);
$this->insert($firstname, $lastname);
}
function insert($fname, $lname)
{
$insert = "INSERT INTO table (firstname, lastname)
VALUES ('$fname','$lname')";
mysql_query($insert)
or die("could not insert:".mysql_error());
header('Location: blah.php');
}
function emptyCheck($fname, $lname)
{
if ($fname == "" || $lname == "")
{
echo "Please fill in all the fields.";
}
}
}
?>
,此页面显示:
<?php
include('database.php');
$db = new Database();
$sql = "SELECT *
FROM tables";
if ($_GET['sort'] == 'id')
{
$sql .= " ORDER BY id";
}
elseif ($_GET['sort'] == 'fn')
{
$sql .= " ORDER BY firstname";
}
elseif ($_GET['sort'] == 'ln')
{
$sql .= " ORDER BY lastname";
}
?>
<html>
<body>
<table>
<tr>
<td>
<table border="1" align="center">
<tr>
<th><a href="blah.php?sort=id">ID</a></th>
<th><a href="blah.php?sort=fn">First Name</a></th>
<th><a href="blah.php?sort=ln">Last Name</a></th>
<th>Edit</th>
<th>Delete</th>
</tr>
<?php
$db->query($sql);
?>
</table>
</table>
<a Href="new.php">Add new Record</a>
</body>
</html>
对不起,如果这真的很明显,我在webdev上很糟糕,而且对mysqli来说很新。 感谢。
答案 0 :(得分:2)
您应该对查询结果使用fetch_object
而不是数据库连接:
$result = $this->dbLocalhost->query($queryString);
while($row = $result->fetch_object()) // here
答案 1 :(得分:1)
此行while($row = $this->dbLocalhost->fetch_object($result))
必须
$result = $this->dbLocalhost->query($queryString);
while($row = $result->fetch_object())
此外,insert
函数使用mysql而不是mysqli
。