我已经尝试了所有我能想到的方法,但当我尝试运行它时仍然出现以下错误。我认为这是一个小错误,因为我从其他地方拼接和切割了这段代码,但为了我,我似乎无法弄清楚。致命错误:未捕获异常:PDOException:SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在 '['ADPs'],owner=[''],type=[''],company=[''],status=['Active 附近使用的正确语法'],soc=['yes'],email=[' 在 C:\xampp\htdocs\updateVendor.php 中的第 1 行:129 堆栈跟踪:#0 C:\xampp\htdocs\updateVendor.php(129): PDOStatement->execute() #1 {main} in C:\xampp\htdocs\updateVendor.php:136 堆栈跟踪:#0 {main} 在第 136 行的 C:\xampp\htdocs\updateVendor.php 中抛出<?phpsession_start();/* Include the database connection file (remember to change the connection parameters) */require './db_inc.php';/* Include the Account class file */require './account_class.php';/* Create a new Account object */$account = new Account();$user = $_SESSION['username'];$login = FALSE;$id = $account->getIdFromName($user);try{ $login = $account->sessionLogin();}catch (Exception $e){ echo $e->getMessage(); die();}if ($login){}else{ header('Location: ./index.php');} $name = $_POST['vendor']; $owner = $_POST['owner']; $status = $_POST['status']; $company = $_POST['company']; $email = $_POST['email']; $type = $_POST['type']; $descr = $_POST['descr']; $owner_email = $_POST['owner_email']; $inherit = $_POST['inherit']; $residual = $_POST['residual']; if(isset($_POST['mfa'])){ $mfa = "1"; } else { $mfa = "0"; } if(isset($_POST['policy'])){ $policy = "1"; } else { $policy = "0"; } if(isset($_POST['dr'])){ $dr = "1"; } else { $dr = "0"; } if(isset($_POST['ir'])){ $ir = "1"; } else { $ir = "0"; } if(isset($_POST['media'])){ $media = "1"; } else { $media = "0"; } if(isset($_POST['remoteaccess'])){ $remoteaccess = "1"; } else { $remoteaccess = "0"; }我在想我的语法完全错误,或者我放错了地方,但我已经盯着这个看了很长时间,我没有看到我的错误。
2 回答
HUH函数
TA贡献1836条经验 获得超4个赞
请先阅读PDO文档。
特别是与准备方法部分。
在这里,例如,您可以看到,所有值都显示为带有“?”的伪变量,然后按照请求中的顺序插入。
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
因此,在准备方法中插入您的查询,如下所示:
$sth = $dbh->prepare('UPDATE vendor_data SET name = ?, ...');
在执行方法绑定参数中:
$sth->execute([$name, ...]);
慕田峪9158850
TA贡献1794条经验 获得超7个赞
你的语法不正确。您不需要将变量括起来的方括号。此外,由于您使用的是 PDO,因此您应该绑定参数。
因此,您的查询将变为:
$query = "UPDATE vendor_data SET name= :name, owner= :owner ... WHERE id= :id";
然后,在执行方法中传入命名变量数组:
$res->execute([':name' => $name, ':owner' => $owner ... , ':id' => $id]);
- 2 回答
- 0 关注
- 121 浏览
添加回答
举报
0/150
提交
取消