Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php <;b>;警告</b>;:PDOStatement::execute():SQLSTATE[HY093]:参数编号无效:绑定变量的编号与中的令牌编号不匹配_Php_Mysql - Fatal编程技术网

Php <;b>;警告</b>;:PDOStatement::execute():SQLSTATE[HY093]:参数编号无效:绑定变量的编号与中的令牌编号不匹配

Php <;b>;警告</b>;:PDOStatement::execute():SQLSTATE[HY093]:参数编号无效:绑定变量的编号与中的令牌编号不匹配,php,mysql,Php,Mysql,我在将数据更新到数据库时遇到此警告这是我的代码 function update(){ // update query $query = "UPDATE " . $this->table_name . " SET name = :name, episodedate = :episodedate, episodenumber = : episodenumber, streamlink = :streamlink,

我在将数据更新到数据库时遇到此警告这是我的代码

function update(){ 
    // update query
    $query = "UPDATE
                " . $this->table_name . "
            SET name = :name, episodedate = :episodedate, episodenumber = : episodenumber, streamlink = :streamlink, 
            seasonid = :seasonid
            WHERE
             id = :id";

    // prepare query statement
    $stmt = $this->conn->prepare($query);

    // sanitize  
    $this->seasonid=htmlspecialchars(strip_tags($this->seasonid));
    $this->name=htmlspecialchars(strip_tags($this->name));
    $this->episodedate=htmlspecialchars(strip_tags($this->episodedate));
    $this->episodenumber=htmlspecialchars(strip_tags($this->episodenumber));
    $this->streamlink=htmlspecialchars(strip_tags($this->streamlink));
    $this->id=htmlspecialchars(strip_tags($this->id));

    $stmt->bindParam(':name', $this->name);
    $stmt->bindParam(':episodedate', $this->episodedate);
    $stmt->bindParam(':episodenumber', $this->episodenumber);
    $stmt->bindParam(':streamlink', $this->streamlink);
    $stmt->bindParam(':seasonid', $this->seasonid);
    $stmt->bindParam(':id', $this->id);

    // execute the query
    if($stmt->execute()){
        return true;
    }else{
        return false;
    }
}

请任何人都能帮助我。我已经检查了所有的打字、表格结构、查询,但都没有结果。请帮助我。

您似乎将插曲id绑定到
:id
而不是
:eposodeid
您还将插曲名称绑定到
:name
,而不是
:epname

试着替换
$stmt->bindParam(':id',$this->id)
$stmt->bindParam(':eposodeid',$this->id)


$stmt->bindParam(':name',$this->name)
$stmt->bindParam(':epiname',$this->name)

$query

中的
eposodenumber
之间还有一个空格,请尝试以下操作:

$query = "UPDATE
          " . $this->table_name . "
          SET name = :name, episodedate = :episodedate, episodenumber = :episodenumber, streamlink = :streamlink, 
          seasonid = :seasonid
          WHERE
          id = :id";

//复制并粘贴此代码。

请将代码、错误、样本数据或文本输出以纯文本形式发布在此处,而不是以图像形式发布,这些图像可能难以阅读,无法复制粘贴以帮助测试代码或用于答案,并且对使用屏幕阅读器的人不友好。您可以编辑问题以在问题正文中添加代码。使用
{}
按钮格式化任何代码块,或使用四个空格缩进以获得相同效果。我们无法将您的屏幕截图作为代码运行。此外,您可能已经意识到,标题中不能包含HTML标记。在
之后有一个空格(
:epiodeNumber
应该是
:epiodeNumber
)在查询中。@tadman但如果您尝试编辑标题以外的HTMl标记,您会收到一条警告,提示您在使用
bindParam
时,另一个问题已经有了确切的标题(),这是一种安全地向查询提供用户数据的方法,请勿在输入时使用
htmlspecialchars
strip\u标记。当从数据库中提取内容并在HTML上下文中显示时,应使用这些选项。您的数据库应该包含原始值,因为您可能需要对这些值进行JSON/JavaScript或纯文本编码,在这种情况下,您根本不需要HTML编码。当op在运行中更改内容时,这不是很好吗?谢谢,空间是个问题。我花了三个多小时调试。谢谢你,伙计