【问题标题】:UPDATE prepared statement PHP ErrorUPDATE 准备好的语句 PHP 错误
【发布时间】:2014-02-12 14:52:26
【问题描述】:

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

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

【问题讨论】:

  • 检查 var_dump($stmt) 进行调试

标签: php prepared-statement hitcounter


【解决方案1】:

删除更新查询中的 (') 单引号并改用反引号 (`)

所以

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

【讨论】:

  • 可以吗?也是在`里面还是应该什么都没有?
【解决方案2】:

虽然 Krish R 的响应是解决方案,但在这种情况下您想要做的事情之一是查看 $mysqli-&gt;error 以实际收到错误消息。这将告诉您'forum' SET 'Vi... 附近有语法错误。这本身应该表明该特定字符(字符串中的第一个 ')是最可能导致错误的原因。

【讨论】:

    【解决方案3】:

    您的查询似乎有问题。

    注意,PDO 语句不需要单引号

    试试这个:

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

    【讨论】:

      【解决方案4】:
      <?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>
      

      【讨论】:

        猜你喜欢
        • 2021-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-18
        相关资源
        最近更新 更多