簡體   English   中英

$ POST值不更新數據庫? 錯誤的MySQL查詢?

[英]$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"
  1. 有一個逗號,WHERE ;
  2. 您可能需要使用backqoutes / backticks來轉義列名;
  3. 您的字符串值應在單引號'

UPD:

1>我建議您使用以下方法檢查變量:

var_dump($id, $sus, $dev, $ip, $depend, $email);

在執行查詢之前。

2>位置:

if(mysql_errno())exit(mysql_error());

查詢執行后自行確定問題。 這是一種調試措施 ,應該會有所幫助。 您可以在生產/部署版本中刪除它們。

PS:不建議使用php_mysql 我建議您改用php_pdophp_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.

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