[英]$POST values not updating database? bad MySQL query?
我當前正在編寫一個應用程序,其中有一個名為devices.php的頁面,該頁面查詢mysql數據庫中的所有記錄並將它們顯示在html表中。 我在表格的每一行中都有一個復選框,用戶可以檢查該復選框,然后單擊“編輯”或“提交”按鈕以編輯該記錄。 單擊提交按鈕后,會將您帶到另一個頁面edit_device.php,然后您可以在其中編輯該設備。i $ _GET單擊的復選框的值,即該記錄的“主鍵”,即然后查詢數據庫以輸入該查詢的值作為另一個html表單的默認值。此處的目標是將該設備拉入表單,如果他們需要更改該記錄的所有列值,則可以,或者,如果他們只需要編輯一個列值,則可以擦除默認值,然后輸入新的列值...我正試圖$ _GET該表單的值,並在數據庫中更新該記錄。現在,當我在devices.php上單擊“編輯”時,它將帶我進入edit_devices.php,並從數據庫中提取該記錄,並將其輸入到表單的字段中……我遇到的問題是,當您更改時表單文本框/字段中的值之一,不會在數據庫中更新。 它仍然只是原始值。 這是我的代碼:
<!doctype html>
<html>
<?php
include 'dbcon.config';
$id=$GET_['check_box'];
$result=mysql_query("SELECT * FROM device_entries WHERE Id=$id");
$record=mysql_fetch_row($result);
$ident = $record[0];
$suspend = $record[1];
$device = $record[2];
$ipadd = $record[3];
$dep = $record[4];
$emailadd= $record[5];
?>
<body>
<form method="get">
ID: <input type="text" value="<?php echo $ident; ?>" name="id">
Suspended: <input type="text" value="<?php echo $suspend; ?>" name="sus">
Device : <input type="text value="<?php echo $device; ?>" name="device">
IP : <input type="text" value="<?php echo $ipadd; ?>" name="ip">
Dependency: <input type="text" value="<?php echo $dep; ?>" name="depend">
Email: <input type="text" value="<?php echo $emailadd; ?>" name="email">
<input type="submit" value="update" name="submit1">
</form>
</body>
</html>
<?php
if(isset($_GET['submit1'])) {
$id=$_GET['id'];
$sus=$_GET['sus'];
$dev=$_GET['device'];
$ip=$_GET['ip'];
$depend=$_GET['depend'];
$email=$_GET['email'];
$update=mysql_query("UPDATE device_entries SET Suspended=$sus, Device=$dev, IP=$ip, Depend=$depend, Email=$email WHERE Id=$id")
}
mysql_close($con);
?>
頂部似乎正在執行我想要的操作...似乎與$ update查詢有關。
嘗試將查詢更改為此:
"UPDATE `device_entries` SET `Suspended`='$sus', `Device`='$dev', `IP`='$ip', `Depend`='$depend', `Email`='$email' WHERE Id=$id"
,
前WHERE
; '
。 UPD:
1>我建議您使用以下方法檢查變量:
var_dump($id, $sus, $dev, $ip, $depend, $email);
在執行查詢之前。
2>位置:
if(mysql_errno())exit(mysql_error());
查詢執行后自行確定問題。 這是一種調試措施 ,應該會有所幫助。 您可以在生產/部署版本中刪除它們。
PS:不建議使用php_mysql
。 我建議您改用php_pdo
或php_mysqli
。 是的,請注意, NullPointer表示。 您的代碼容易受到SQL Injection的攻擊。
您的查詢我錯了,您將逗號放在無效的where子句之前。 改成這個
"UPDATE device_entries SET Suspended=$sus, Device=$dev, IP=$ip, Depend=$depend, Email=$email WHERE Id='".$id."'";
其次,它沒有執行,因為您試圖將一個名為“ sus”的非html現有字段分配給變量$suspend
,這將導致更新查詢失敗
更改為
$update=mysql_query("UPDATE device_entries SET Suspended='$sus', Device='$dev', IP='$ip', Depend='$depend', Email='$email' WHERE Id=$id");
$ update = mysql_query(“ UPDATE device_entries SET Suspended
='$ sus', Device
='$ dev', IP
='$ ip', Depend
='$ depend', Email
='$ email'WHERE ID = $ id”) ;
-只需在列名解決它之前添加刻度線..和我自己嘗試過的單引號就沒有運氣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.