我正在创建一个动态页面,该页面会根据用户点击的帖子而发生变化。我也希望每次加载页面时页面都会增加一个视图(点击计数器)。我目前收到以下错误。
致命错误:在第13行的C:\ Users \ PC \ Documents \ XAMPP \ htdocs \ post.php中的非对象上调用成员函数bind_param()
<?php
session_start();
include 'php/config.php';
$post = $_GET['post'];
$stmt = $mysqli->prepare("SELECT * FROM forum WHERE ForumId = '$post'");
$stmt->execute();
$stmt->bind_result($ForumId,$ForumTitle,$ForumPostText,$PostDate,$Views);
$stmt->fetch();
$stmt->close();
$Views = 1;
$stmt = $mysqli->prepare("UPDATE 'forum' SET 'Views' = 'Views'+ 1 WHERE 'ForumId' = '?' ");
$stmt->bind_param('i',$post);
$stmt->execute();
$stmt->close();
?>
<!DOCTYPE html>
// The rest of the webpage yada yada yada
答案 0 :(得分:2)
在更新查询中删除('
)单引号并使用反引号(`)代替
所以
"UPDATE `forum` SET `Views` = Views+ 1 WHERE `ForumId` = ?"
答案 1 :(得分:1)
虽然Krish R的回答是解决方案,但在这种情况下你想要做的事情之一就是$mysqli->error
来实际获得错误信息。这将告诉您'forum' SET 'Vi...
附近有语法错误。这本身应该表明该特定字符(字符串中的第一个字符)是导致错误的最可能原因。
答案 2 :(得分:0)
您的查询似乎有问题。
请注意,PDO声明不需要单引号
试试这个:
$stmt = $mysqli->prepare("UPDATE forum SET Views = Views+ 1 WHERE ForumId = ?");
$stmt->bind_param('i', $post);
答案 3 :(得分:0)
<?php
session_start();
include 'php/config.php';
$post = $_GET['post'];
$stmt = $mysqli->prepare("SELECT * FROM forum WHERE ForumId = $post");
$stmt->execute();
$stmt->bind_result($ForumId,$ForumTitle,$ForumPostText,$PostDate,$Views);
$stmt->fetch();
$stmt->close();
$Views = 1;
$stmt = $mysqli->prepare("UPDATE forum SET Views = Views + 1 WHERE ForumId = ?");
$stmt->bind_param('i', $post);
$stmt->execute();
$stmt->close();
?>
<!DOCTYPE html>