亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法通過php更新sql表

無法通過php更新sql表

PHP
皈依舞 2021-05-05 13:21:18
這是我用來嘗試更新記錄的代碼。我沒有看到任何問題,但是它沒有引發錯誤并指出它已成功運行。我嘗試了幾種其他方法,它們只是不更新MSSQL表中的行。數據庫/表在運行Windows 10和IIS的我的機器上是本地的(我知道?。?。<?php/** * Use an HTML form to edit an entry in the * users table. * */ require "C:\inetpub\wwwroot\Remediation\config.php"; require "C:\inetpub\wwwroot\Remediation\common.php"; if (isset($_POST['submit'])) {   if (!hash_equals($_SESSION['csrf'], $_POST['csrf'])) die();   try {     $connection = new PDO($dsn, $username, $password);     $user =[       "id"        => $_POST['id'],       "firstname" => $_POST['firstname'],       "lastname"  => $_POST['lastname'],       "email"     => $_POST['email'],       "age"       => $_POST['age'],       "location"  => $_POST['location'],       "date"      => $_POST['date']     ];     $sql = "UPDATE users             SET id = :id,               firstname = :firstname,               lastname = :lastname,               email = :email,               age = :age,               location = :location,               date = :date             WHERE id = :id";   $statement = $connection->prepare($sql);   $statement->execute($user);   } catch(PDOException $error) {       echo $sql . "<br>" . $error->getMessage();   } } if (isset($_GET['id'])) {   try {     $connection = new PDO($dsn, $username, $password);     $id = $_GET['id'];     $sql = "SELECT * FROM users WHERE id = :id";     $statement = $connection->prepare($sql);     $statement->bindValue(':id', $id);     $statement->execute();     $user = $statement->fetch(PDO::FETCH_ASSOC);   } catch(PDOException $error) {       echo $sql . "<br>" . $error->getMessage();   } } else {     echo "Something went wrong!";     exit; } ?>     <?php if (isset($_POST['submit']) && $statement) : ?>    <blockquote><?php echo escape($_POST['firstname']); ?> successfully  updated.</blockquote> <?php endif; ?> <h2>Edit a user</h2>我到底在哪里錯。我可以連接,修改和創建就好了。我是否需要調整$ USER或查詢?
查看完整描述

3 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

我犯了一個菜鳥錯誤,我試圖在MSSQL中更新ID和時間戳列,這是不允許的。我將自己的代碼更改為此,并且效果很好:


   $user =[

     "id"        => $_POST['id'],

     "firstname" => $_POST['firstname'],

     "lastname"  => $_POST['lastname'],

     "email"     => $_POST['email'],

     "age"       => $_POST['age'],

     "location"  => $_POST['location'],

           ];


   $sql = "UPDATE users

           SET firstname = :firstname,

             lastname = :lastname,

             email = :email,

             age = :age,

            location = :location

           WHERE id = :id";


查看完整回答
反對 回復 2021-05-14
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

您是否直接在MSSQL Management Studio中嘗試了該查詢?

之后,您會看到它工作正常,請嘗試“回顯” POST變量以查看是否正確獲取了它們。


查看完整回答
反對 回復 2021-05-14
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

我沒看到INSERT。相反,您僅使用UPDATE意味著僅修改現有記錄。這是你想要的嗎?


 $sql = "UPDATE users

         SET id = :id,

           firstname = :firstname,

           lastname = :lastname,

           email = :email,

           age = :age,

           location = :location,

           date = :date

         WHERE id = :id";

在這里,您通過選擇一個(所有)記錄id = :id,并在此處SET id = :id將其設置id為一個已設置的值。Is不會破壞某些內容,但這暗示您邏輯中的某些內容是錯誤的。


順便說一句,您允許每個客戶更改記錄。不是SQL注入,但很可能非常糟糕。


查看完整回答
反對 回復 2021-05-14
  • 3 回答
  • 0 關注
  • 167 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號