为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 php 中为 SQL 编写 UPDATE

如何在 php 中为 SQL 编写 UPDATE

PHP
哆啦的时光机 2022-10-14 15:04:21
我已经尝试了所有我能想到的方法,但当我尝试运行它时仍然出现以下错误。我认为这是一个小错误,因为我从其他地方拼接和切割了这段代码,但为了我,我似乎无法弄清楚。致命错误:未捕获异常: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, ...]);


查看完整回答
反对 回复 2022-10-14
?
慕田峪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]);


查看完整回答
反对 回复 2022-10-14
  • 2 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信