簡體   English   中英

UPDATE准備好的語句PHP錯誤

[英]UPDATE prepared statement PHP Error

我正在創建一個動態頁面,該頁面會根據用戶點擊過的帖子而變化。 我還希望每次加載頁面時頁面的視圖(點擊計數器)都增加一。 我目前收到以下錯誤。

致命錯誤:在第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

在更新查詢中刪除( ' )單引號,而使用反引號(`)

所以

"UPDATE `forum` SET `Views` = Views+ 1 WHERE `ForumId` = ?"

盡管Krish R的響應是解決方案,但是在這種情況下,您要做的一件事是查看$mysqli->error以實際獲得錯誤消息。 這將告訴您在'forum' SET 'Vi...附近有語法錯誤。 它本身應表明該特定字符(字符串中的第一個')是最有可能導致錯誤的原因。

看來您在查詢中有問題。

請注意,PDO語句不需要單引號

試試這個:

$stmt = $mysqli->prepare("UPDATE forum SET Views = Views+ 1 WHERE ForumId = ?");
$stmt->bind_param('i', $post);
<?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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM