My PHP Prepared Statement将不工作(对布尔值调用成员函数bind_param())[duplicate]

7xllpg7q  于 2022-12-02  发布在  PHP
关注(0)|答案(1)|浏览(123)

此问题在此处已有答案

What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must be of type mysqli_result and such(1个答案)
五年前就关门了。
我正在尝试使用 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 get被添加到一个groupId。
下面是发布的数据:

groupId 29
usernameToAdd user1

或作为原始数据

groupId=29&usernameToAdd=user1

我想知道我哪里出错了?用户“user1”肯定存在于表user中。
如果你需要的话,这里还有我的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) {
        });
}

它总是给我一个

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

$stmtInsert->bind_param("ii", intval($id), intval($groupId));这条线上
我不知道为什么,我已经想了一段时间了。

wgeznvg7

wgeznvg71#

你可以试试这条路

$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不匹配,如果不能正常工作

相关问题