-1

这是代码

require_once 'functions.php';
require_once 'cfg.php';
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $db);
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '. $mysqli->connect_error);
}
$query='SELECT * FROM cobra';
$result=$mysqli->prepare($query);
$result->execute();
$result->close();
echo array_values($result);

我得到一个又一个错误。最初,我将查询部分包含在一个函数中,但不断遇到各种 $mysqli 变量范围的问题。

最近的错误是:致命错误:在第 11 行的 ...cobra/lib/distro.php 中的非对象上调用成员函数 execute()

第 11 行是:

$result->execute();

我想了解一些有关解决此问题的不同方法的背景知识。我正在尽我所能学习,但也很快接近最后期限。请帮忙。

4

2 回答 2

1

prepare没有返回语句句柄,而是false,表示prepare没有按预期运行。

你可以试试这个:

$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $db);
if ($mysqli->connect_error) {
    die('Connect Error (' . $mysqli->connect_errno . ') '. $mysqli->connect_error);
}
$query =' SELECT * FROM cobra';
$stmt = $mysqli->prepare($query);
if (!$stmt)
  die($mysqli->error);

$stmt->execute();

echo array_values($stmt->fetch());

$stmt->close();
于 2012-09-12T18:54:16.583 回答
0

您需要检查这$result是一个有效的mysqli_stmt对象。

$query='SELECT * FROM cobra';
$result=$mysqli->prepare($query);
if ($result instanceof mysqli_stmt) {
    $result->execute();
} else {
    // determine what went wrong
    echo $mysqli->error;
}
于 2012-09-12T18:55:32.903 回答