簡體   English   中英

UPDATE根本不影響記錄

[英]UPDATE doesn't affect the record at all

我正在嘗試更新我的數據庫中的一些記錄,這段代碼以前一直在運行,但現在已經不存在了。 將id變量更改為固定數后,代碼仍然不會影響數據庫。 沒有發出錯誤。

<?php
header('Access-Control-Allow-Origin: *');

error_reporting(E_ALL); 
ini_set("display_errors", 1);

$db = new PDO('mysql:host=localhost;dbname=xxx;charset=utf8', 'xxx', 'xxx');

$party = ($_POST['party']);
$id = ($_POST['id']); // $id is a string with ids separated by commas (1,2,3,4 e.t.c.)
$state = ($_POST['state']); // $state is either 1 or 0.
$code = ($_POST['fetchCode']);

$stmt = $db->prepare("UPDATE wishes SET state = $state WHERE fetchCode = '$code' AND partyID = '$party' AND id IN ($id); ");

$stmt->execute();

echo json_encode("Done");
?>

我用於數據庫連接的用戶只有更新狀態列的權限,因此我沒有看到SQL注入的風險。 我是對的,我的代碼有什么問題?

至於你問題的第二部分......

...我沒有看到SQL注入的風險。 我是對的......

  1. 用戶權限往往會隨着時間的推移而發生變化,並且不會總是記住使用這些權限的代碼需要更新的內容。
  2. 僅僅因為您在技術上可能不會明顯容易受到SQL注入攻擊,但仍然存在可能導致最終用戶遭受有害體驗的問題。 舉例來說,將來的某一天會有一個新的fetchCode被添加到你的表中,其中可能包含一個像"9focuspoints's New Code"這樣'字符"9focuspoints's New Code"轉義就會破壞這一點,導致受挫的客戶甚至可能是一個不受歡迎的深夜客戶服務電話取決於關於操作的嚴重性。

這只是一種糟糕的形式,你已經完成了大部分的語法工作來實際准備語句,所以你也可以完成這項工作。


至於問題的前一部分,我是,你應該對事件的變化過於懷疑:

...此代碼以前一直在運行但不再...

自從這項工作以來有什么變化? 如果這段代碼沒有改變,那么我懷疑你會在這里發布很多幫助。 要檢查的一些問題:

  1. 在獨立客戶端中運行時,SQL語句是否有效?
  2. 當您在故障排除方式中var_dump變量時,它們是否包含您期望的值?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM