【问题标题】:My PHP Prepared Statement won't work (Call to a member function bind_param() on boolean) [duplicate]我的 PHP 准备语句不起作用(在布尔值上调用成员函数 bind_param())[重复]
【发布时间】:2017-07-24 07:26:26
【问题描述】:

我正在尝试使用 AJAX 将数据插入到我的一张表中。

这是我的 PHP 代码:

include '../data/header.php'; //Here I get my DB-Connection Data from (username etc.)
$usernameToAdd = $_POST["usernameToAdd"];
$groupId = $_POST["groupId"];

$conn = new mysqli($dbserver, $dbuser, $dbpassword, $dbname);
$stmt = $conn->prepare("SELECT id FROM user WHERE username=?;");
$stmt->bind_param("s", $usernameToAdd);
$stmt->execute();
$stmt->bind_result($id);

if($stmt->fetch() > 0) {
    $stmtInsert = $conn->prepare("INSERT INTO group_membership (userId, groupId) VALUES (?, ?);");
    $stmtInsert->bind_param("ii", intval($id), intval($groupId));
    $stmtInsert->execute();
}

这是一个组关系表。一个 userId 被添加到一个 groupId 中。

这里是发布的数据:

groupId 29
usernameToAdd user1

或作为原始数据

groupId=29&usernameToAdd=user1

我想知道我在哪里犯了错误?用户“user1”肯定存在于用户表中。

如果您需要,这里还有我的 JavaScript 代码:

function addUserToGroup(btn){
    var groupId = btn.getAttribute("id").substring(13);
    var usernameToAdd = $("#addToGroup"+groupId).val();

    $.post("groups/addUserToGroup.php",
        {
            groupId: groupId,
            usernameToAdd: usernameToAdd
        },
        function (data, status) {
        });
}

它总是给我一个

致命错误:在布尔值上调用成员函数 bind_param() 在 D:\xampp\htdocs\myCalendar\groups\addUserToGroup.php 上线 14

在这条线上$stmtInsert->bind_param("ii", intval($id), intval($groupId));

我不知道为什么,我一直在尝试弄清楚。

【问题讨论】:

  • 请检查 $stmtInsert 在准备查询之后绑定参数之前的类型。
  • 从找出错误所在开始:stackoverflow.com/questions/22662488/…
  • 不相关的错误:您不能在bind_param() 中使用intval()。参数必须绑定到变量,而不是函数。

标签: javascript php jquery mysql sql


【解决方案1】:

你可以试试这个方法

$sql = "INSERT INTO group_membership (userId, groupId) VALUES (?, ?);";
if($query =  $conn->prepare($sql)){
    $stmtInsert ->bind_param("ii", intval($id), intval($groupId));
    $stmtInsert ->execute();
    //rest of code here
}else{
   //error !! don't go further
   var_dump($conn->error);
}

如果有任何错误,您将提供有关您的错误的信息,例如表 field namedatatype 不匹配(如果不能正常工作)

【讨论】:

  • $this->db->conn?这是什么?
猜你喜欢
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 2014-07-17
  • 1970-01-01
相关资源
最近更新 更多