我正在从 phpMyAdmin 中的 MySQL 数据库中获取数据。然后,我将该数据加载到表单上的多个文本框中。用户可以编辑此数据,然后按我表单上Save Changes
的按钮。submit
运行提交按钮时,它应该运行下面的函数$app->post('/admin-edit-stack'
并更新数据库中的数据,但我收到了错误消息。
我查看了文档和其他示例,但我看不出我做错了什么来输出这个错误!
完整的错误信息是:
Fatal error: Call to a member function bind_param() on a non-object in index.php on line 117
这是完整的更新功能:
$app->post('/admin-edit-stack', isAuthenticated($app),function () use($app,$data, $stacks, $link){
$id = $_POST['stack-id'];
$name = $_POST['stack-name'];
$slug = $_POST['stack-slug'];
$icon = $_POST['stack-icon'];
$sql = $link->prepare("UPDATE stacks WHERE ID=? SET Name=?, Slug=?, Icon = ?");
>>> $sql->bind_param("isss", $id, $name, $slug, $icon); <<<ERROR HERE
$sql->execute();
$sql->close();
$app->view()->appendData(array("username" => getUsername($app)));
$app->redirect($app->urlFor('admin'));
})->name('admin-edit-stack');
这是在提交时运行函数的 html 表单代码:
<form class="forms" method="POST" action="/admin-edit-stack">
<input type="hidden" name="stack-id" value="{{data.ID}}">
<label>Name: </label>
<input type="text" class="input-block-level" placeholder="Name" name="stack-name" value="{{data.Name}}"></br>
<label>Slug: </label>
<input type="text" class="input-block-level" placeholder="Slug" name="stack-slug" value="{{data.Slug}}"></br>
<label>Icon: </label>
<input type="text" class="input-block-level" placeholder="Icon" name="stack-icon" value="{{data.Icon}}"></br>
<button class="btn btn-success" type="submit"><i class="icon-check"></i> Save Changes</button>
<a class="btn btn-danger" href="/admin"><i class="icon-remove-circle"></i> Cancel</a>
</form>
这是表格的图像:
我刚刚意识到 SET 和 WHERE 部分是错误的。这是新功能:
$app->post('/admin-edit-stack', isAuthenticated($app),function () use($app,$data, $stacks, $link){
$id = $_POST['stack-id'];
$name = $_POST['stack-name'];
$slug = $_POST['stack-slug'];
$icon = $_POST['stack-icon'];
if ($sql = $link->prepare("UPDATE stacks SET Name=?, Slug=?, Icon = ? WHERE ID=?")){
$sql->bind_param("isss", $id, $name, $slug, $icon);
$sql->execute();
$sql->close();
}
else {
//Error
printf("Prep statment failed: %s\n", $link->error);
}
$app->view()->appendData(array("username" => getUsername($app)));
$app->redirect($app->urlFor('admin'));
})->name('admin-edit-stack');
这现在没有输出错误消息,但仍然没有更新数据库..有什么想法吗?