Php PDOStatement::execute():SQLSTATE[HY093]:参数编号无效

Php PDOStatement::execute():SQLSTATE[HY093]:参数编号无效,php,mysql,pdo,Php,Mysql,Pdo,我试图用PDO做一个更新,但是我得到了一个错误,我没有检测到问题在哪里 错误是这样的: PDOStatement::execute():SQLSTATE[HY093]:无效参数编号:参数未在$updateCategory->execute()中定义 有人知道为什么会这样吗 $urledit = $_GET['edit']; $f['name'] = $_POST['name']; $f['content'] = $_POST['content']; $f['tags'] = $_POST['ta

我试图用PDO做一个更新,但是我得到了一个错误,我没有检测到问题在哪里

错误是这样的: PDOStatement::execute():SQLSTATE[HY093]:无效参数编号:参数未在$updateCategory->execute()中定义

有人知道为什么会这样吗

$urledit = $_GET['edit'];
$f['name'] = $_POST['name'];
$f['content'] = $_POST['content'];
$f['tags'] = $_POST['tags'];
$f['date'] = $_POST['date'];


$updateCategory = $pdo->prepare("UPDATE categories SET name=:name, url=:url, content=:content, tags=:tags, date=:date WHERE id=:urledit");  
$updateCategory->bindValue(':name', $f['name']);
$updateCategory->bindValue(':url', $f['url']);
$updateCategory->bindValue(':content', $f['content']);
$updateCategory->bindValue(':tags', $f['tags']);
$updateCategory->bindValue(':date', $f['date']);
$updateCategory->bindValue(':id', $urledit);
$updateCategory->execute();
echo 'Update Sucessed!';

将查询中的
:urledit
更改为
:id
。查询中的所有绑定值必须匹配。

此行需要更改:

$updateCategory->bindValue(':id', $urledit);
为此:

$updateCategory->bindValue(':urledit', $urledit);
因为在这一行:

$updateCategory = $pdo->prepare("UPDATE categories SET name=:name, url=:url, content=:content, tags=:tags, date=:date WHERE id=:urledit"); 

您引用的是占位符
:urledit
,而不是
:id

,Victory的答案是正确的,但请不要像这样绑定每个参数,PDO非常棒,execute函数允许您传递一个数组,该数组将为您绑定它们:)此外,如果您仅在没有必要将变量声明为变量时才使用该变量,则示例如下:

PHP

$parameters = array(
    ':name' => $_POST['name'],
    ':url' => $_POST['url'], 
    ':content' => $_POST['content'], 
    ':tags' => $_POST['tags'], 
    ':date' => $_POST['date'], 
    ':urledit' => $_GET['edit'])
);

$updateCategory = $pdo->prepare("UPDATE categories 
                                 SET name = :name, url = :url, content = :content, tags = :tags, date = :date 
                                 WHERE id = :urledit");

if($updateCategory->execute($parameters)) {
    echo 'Update Sucessed!';
}

你是如何在同一页上获取和发布的<代码>$urledit=$\u获取['edit']和rest所有帖子?谢谢你的回答,我将帖子用于我的表单字段,然后获取我的编辑url变量!您可以发送两个haha GET使用URL,这样他就可以使用action=“handler.php?edit=true”提交表单,然后使用POST action hahahathank You提交重置。这真是个问题!这是我第一次更新PDO,所以我还是有点混乱。谢谢:)您正在使用PDO,听到这个消息真是太好了,看到使用不推荐的
mysql_*
:)编写新代码总是让人难过。它也可以工作,谢谢您的提示!)