试图了解bind_param(无法编辑变量,否则将无法保存任何内容)

时间:2018-09-08 19:46:44

标签: sql database

我正在尝试使代码的这一部分起作用。 1.我不明白什么是“ ssi”。 2.如果我只想要姓氏并在两个​​地方都删除姓氏,则代码将不再起作用。这是为什么?

因此,通过执行第二步,我无法编辑和调整我的代码。我只希望姓氏存在,而不是姓氏,但是如果我删除那些姓氏变量,它将不起作用。不明白为什么?你能帮我吗?

感谢您的时间

if ($stmt = $mysqli->prepare("UPDATE players SET firstname = ?, lastname = ?
WHERE id=?"))
{
$stmt->bind_param("ssi", $firstname, $lastname, $id);
$stmt->execute();
$stmt->close();
}

1 个答案:

答案 0 :(得分:0)

第一个参数(在您的情况下为“ ssi”)是一种格式字符串,它告诉bind_param绑定了哪些类型的参数。 “ s”代表“字符串”,“ i”代表“整数”。在这里,您有一个由两个字符串(名字和姓氏)和一个整数(id)组成的系列。

如果要删除姓氏,则应从set子句中删除姓氏,删除其绑定变量,然后从格式字符串中删除相应的“ s”:

if ($stmt = $mysqli->prepare("UPDATE players SET firstname = ? WHERE id = ?"))
# Updating lastname was removed here -------------------------^
{
    $stmt->bind_param("si", $firstname, $id);
    # s removed --------^
    # $lastname remoed ----------------^

    $stmt->execute();
    $stmt->close();
}