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在运行中更改内容时,这不是很好吗?谢谢,空间是个问题。我花了三个多小时调试。谢谢你,伙计