PHP-通过ID更新databes中的数据



我需要用ID覆盖数据库中的数据。

我有一个代码:

index.php

Databes::updateData($_POST['URL'],$_POST['title'],$_POST['label'],$_POST['content'], $id);

Databes.php

public static function query ($sql, $parameters = array()){
$query = self::$connection->prepare($sql);
$query->execute($parameters);
return $query;
}
public static function updateData($URL, $titel,  $label, $content, $id){
$query = Databes::query("
UPDATE clanky
SET (URL, titulek, popisek, obsah)
VALUES (?, ?, ?, ?)
WHERE clanky.clanek_id= " . $id
, array($URL, $titel,  $label, $content));
}

我会得到一个答案:

致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与MariaDB服务器版本相对应的手册,了解在C:\examplep\htdocs\oop\Ukoly 5\2\tridy\databes.php第2行的"(URL,titulek,popisek,obsah(VALUES('vodni-clanek','ÚvodníČl…'附近使用的正确语法:26堆栈跟踪:#0 C:\examplep\tdocs\oop\ Ukoli 5\2\tridy\databes.php(26(:PDOStatement->execute(Array(#1 C:\examplep\htdocs\oop\Ukoly 5\2\tridy\databes.php(56(:databes::query('\r\n UPDAT…',Array(#2 C:\examplep\tdocs\oop\Ukoly 5\ 2\administrace.php v\xC3\xADtej…',6(在第26行上的C:\examplep\htdocs\oop\Ukoly 5\2\tridy\databes.php中抛出#3{main}

但是如果我直接在数据库中覆盖它。所以数据库会写信给我说它做到了:

UPDATE `clanky` SET `titulek` = 'ÚvodníČlánek' WHERE `clanky`.`clanek_id` = 6; 

根据我在谷歌上发现的内容,我尝试过将查询重写到数据库中,但它仍然报告了一个错误。

拜托,有人不知道我在哪里犯了错?

谢谢你的回答。

您使用的语法不正确-UPDATE clanky SET (...) VALUES (...)无效。你需要做的,以及你似乎正在手动做的,是:

UPDATE clanky
SET URL = ?
, titulek = ?
, popisek = ?
, obsah = ?
WHERE id = ?

当然也要对ID使用参数化,否则你会暴露出SQL注入漏洞(想象一下有人传递ID="ID",你最终得到的是WHERE ID=ID,你的所有行都在更新(

相关内容

  • 没有找到相关文章

最新更新