Php PDOStatement::execute():SQLSTATE[HY093]:参数编号无效
我试图用PDO做一个更新,但是我得到了一个错误,我没有检测到问题在哪里 错误是这样的: PDOStatement::execute():SQLSTATE[HY093]:无效参数编号:参数未在$updateCategory->execute()中定义 有人知道为什么会这样吗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
$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_*
:)编写新代码总是让人难过。它也可以工作,谢谢您的提示!)