当前位置: 首页 > 知识库问答 >
问题:

未捕获错误:对布尔函数调用成员函数prepare()。。。堆栈跟踪:#0{main}抛出[重复]

康烨伟
2023-03-14

我正在尝试使用Ajax和PHP发送输入数据数据库,而不刷新页面。但我得到了这个错误,我已经花了几个小时解决这个问题,但我仍然不能。请帮帮我。谢谢

这是我的index.php文件,我在其中放置了ajax脚本和html代码

  $(document).ready(function() {
    $('#myForm').submit(function(event) {
      event.preventDefault();
      $.ajax({
        url: 'insert.php',
        method: 'post',
        data: $('form').serialize(),
        dataType: 'text',
        success: function(strMessage) {
          $('#result').text(strMessage);
          $('#myForm')[0].reset();
        }
      });
    });
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h5 class="alert-heading">
  ADD INFORMATION
</h5>
<hr>
<form id="myForm" method="post" action="">
  <div class="form-group">
    <label>Full name</label>
    <input type="text" autofocus="on" class="form-control" name="fullname" placeholder="Enter your name here" required>
  </div>
  <div class="form-group">
    <label>Address</label>
    <input type="text" class="form-control" name="address" placeholder="Address" required>
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

</div>

<div class="alert alert-success" role="alert" id="result"></div>

这是我的insert.php文件

<?php 


    try {

        include_once 'classes/Db.php';

        $fullname = addslashes($_POST['fullname']);
        $address = addslashes($_POST['address']);

        $sql = "INSERT INTO users (null, fullname, address) VALUES ('$fullname', '$address')";
        $stmt = $conn->prepare($sql);
        $stmt->execute();

    } catch (PDOException $e) {
        echo "ERROR IN INSERTING DATA! : " . $e->getMessage();
    }

?>

还有我的班级/Db.php档案

<?php       

    $localhost = 'localhost';
    $dbname = 'test_icon';
    $username = 'root';
    $password = '';

    try {

        $sql = 'mysql:localhost=' .$localhost. '; dbname=' .$dbname;
        $stmt = new PDO($sql, $username, $password);
        $conn = $stmt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    } catch (PDOException $e) {
        echo "CONNECTION FAILED: " .$e->getMessage(). '<br/>';
        die();
    }

?>

共有2个答案

常睿范
2023-03-14

创建PDO实例时,您正在设置与setAttribute结果的连接,该结果是一个布尔值,指示函数是否成功。您应该将其设置为构造函数的输出:

$conn = new PDO($sql, $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
班泽语
2023-03-14

第一次修复;

$sql = 'mysql:localhost=' .$localhost. '; dbname=' .$dbname;

应该是:

$sql = 'mysql:host=' .$localhost. '; dbname=' .$dbname;

然后:

$sql = "INSERT INTO users (fullname, address) VALUES (?,?)";
$stmt = $conn->prepare($sql);
$stmt->execute([$fullname,$address]);
 类似资料:
  • 这是三个文件 我得到一个错误“Fatal error:Uncattle error:Call to a member function prepare()on null”。这段代码运行在我的localhost上没有问题,但是当它上传到服务器时,我就出现了这个问题。我在本地使用PHP8和xammp软件。我是三年级学生,请帮帮我。 文件database.php: } 文件admin.php

  • 请帮帮我 致命错误:在第104行的/home/u357965800/public_html/include/class.admin.php中对非对象调用成员函数prepare()

  • 我的代码如下: 我一直收到错误“调用布尔值上的成员函数bind_param()”。我找遍了整个S.O.,找到了几个例子,但没有一个能解决我的问题。我在代码中没有看到任何语法或打字错误。通过使用var_dump,我知道$_POST[“url”]和$_POST[“description”]存在并被正确接收。 想法还是帮助?

  • 问题内容: 这个问题已经在这里有了答案 : mysqli_fetch_assoc()期望参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误? (1个答案) 8个月前关闭。 我的html: 我的rent.php文件: 当我尝试提交时,我的错误是:致命错误:在第18行的C:… \ rent.php中,调用布尔函数的成员函数execute() 电子邮件,msg_text为

  • 我们一直很好地使用WooCommerce订阅,但是当从用户的“我的帐户”部分查看订单时,它开始引起问题,打开WP_DEBUG显示如下: 未捕获的错误:在/wp-content/plugins/woocommerce-subscriptions/includes/wcs-user-functions.php:381中调用bool中的成员函数get_user_id() 第381行是: 鉴于这是一个官方

  • 我收到WordPress发来的关于致命错误的消息。它与WPML字符串翻译插件后端中的特定页面相关。我认为有一个特别的翻译: 访问发现错误的页面(xxxxxxxx/wp admin/admin.php?page=wpml translation management/menu/translations-queue.php) 它还说 错误详细信息===========在文件/nas/content/l