UPDATE准备语句PHP错误

时间:2014-02-12 14:52:26

标签: php prepared-statement hitcounter

我正在创建一个动态页面,该页面会根据用户点击的帖子而发生变化。我也希望每次加载页面时页面都会增加一个视图(点击计数器)。我目前收到以下错误。

  

致命错误:在第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

4 个答案:

答案 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>