2016-01-11 154 views
0

(在發佈之前,我在這裏查看了所有相關的許多問題,並調整了代碼,結果無效)。所以情況如下:我有一個書籍數據庫,我已經添加了一個日期字段(Bookdate)。現在,我想在以前的記錄,這我用下面的代碼做更新日期:PHP-SQL:日期不更新數據庫

$stamp  = get_post($conn, 'stamp'); 
$stamp  = date('Y-m-d H:i:s', strtotime($_POST[$stamp])); 

(該get_post函數返回$conn->real_escape_string($_POST[$var]))。然而,我輸入表單的日期從未在數據庫中得到更新,而是讀取1970-01-01 - 我知道它是Unix epoc的東西。我接受日期詳細信息,其格式爲:

Date <input type="text" name="stamp" value="<?php echo $row[8]; ?>"> 

$ row [8]這裏是我希望更新的Bookdate字段。

下面是SQL更新查詢的代碼塊。 請注意代碼適用於更新所有其他字段,但更新日期沒有任何影響 - 它仍然在1970-01-01,而我沒有更新的其他記錄站在0000-00-00。 Bookdate = NOW()在下面的查詢中很好地將字段更新爲當前日期。那麼,我傳遞的變量有什麼問題? $郵票。??希望對此有所幫助。

if ($_FILES['image2']) 
    { 
    $ed_author = get_post($conn, 'ed_author'); 
    $ed_title = get_post($conn, 'ed_title'); 
    $ed_category = get_post($conn, 'ed_category'); 
    $ed_year  = get_post($conn, 'ed_year'); 
    $hid_isbn  = get_post($conn, 'hid_isbn'); 
    $stamp  = get_post($conn, 'stamp'); 
    $stamp  = date('Y-m-d H:i:s', strtotime($_POST[$stamp])); 

    if($_FILES['image2']['error'] != UPLOAD_ERR_NO_FILE){ 
     $filetmp = $_FILES["image2"]["tmp_name"]; 
     $filename = $_FILES["image2"]["name"]; 
     $filetype = $_FILES["image2"]["type"]; 
     $filepath = "images/".$filename; 

     move_uploaded_file($filetmp, $filepath);   

     $query = "UPDATE classics 
         SET author='$ed_author', title='$ed_title', 
          `type`='$ed_category', `year`='$ed_year', 
          filename='$filename', filepath='$filepath', 
          filetype='$filetype', Bookdate='$stamp' 
         WHERE isbn='$hid_isbn'"; 

     $result = $conn->query($query); 

     if (!$result) echo "EDIT with image failed: $query<br>" . 
      $conn->error . "<br><br>"; 
      $result = $conn->query($query);  

     } else { 
      $query = "UPDATE classics 
          SET author='$ed_author', title='$ed_title', 
           `type`='$ed_category', `year`='$ed_year', 
           Bookdate='$stamp' 
         WHERE isbn='$hid_isbn'"; 

      $result = $conn->query($query); 

      if (!$result) 
       echo "EDIT with image failed: $query<br>" . $conn->error . "<br><br>"; 

     } 
    }  

下面是發生在該日期的形式(還列出了已經存在):

<form action="news.php" method="post" enctype="multipart/form-data"> <pre> 
     Author <input type="text" name="ed_author" value="<?php echo $row[0]; ?>"> 
     Title <input type="text" name="ed_title" value="<?php echo $row[1]; ?>"> 
     Category <input type="text" name="ed_category" value="<?php echo $row[2]; ?>"> 
      Year <input type="text" name="ed_year" value="<?php echo $row[3]; ?>"> 
      ISBN <input type="text" name="hid_isbn" value="<?php echo $row[4]; ?>"readonly> 
      Date <input type="text" name="stamp" value="<?php echo $row[8]; ?>">   

       <input type="hidden" name="oldfilename" value="<?php echo $row[5]; ?>"> 
       <input type="hidden" name="oldfilepath" value="<?php echo $row[6]; ?>"> 
       <input type="hidden" name="oldfiletype" value="<?php echo $row[7]; ?>"> 

       <input type="file" name="image2"> 
       <input type="hidden" name="edit" value="yes"> 
       <input type="submit" name="btn2" value="SUBMIT EDIT"> 

     </pre></form> 

並且爲了清楚,這裏的get_post功能:

function get_post($conn, $var) 
    { 
    return $conn->real_escape_string($_POST[$var]); 
    } 

UPDATE:var_dump在get_post後顯示$ _POST ['stamp']爲NULL;也如下錯誤:

說明:未定義指數:2000-01-01在C:\ XAMPP \ htdocs中\實驗\ woldofbooks \ news.php上線69:$郵票= get_post($康恩,「圖章「);的var_dump($ _ POST [$郵票]);

注意:未定義的索引:2000-01-01在C:\ xampp \ htdocs \ experiment \ woldofbooks \ news.php上第70行:$ stamp = date('Ymd H:i:s',strtotime($ _POST [$郵票]));的var_dump($ _ POST [$郵票]);

說明:未定義指數:1970-01-01 01:00:00在C:\ XAMPP \ htdocs中\實驗\ woldofbooks \上線news.php 70

+0

這是你的數據庫中的列的類型? – Paflow

+0

Bookdate是一個日期字段。 –

+1

也可能轉儲$ _POST [$ stamp]看起來像 – Paflow

回答

2

您正在使用可變$stamp如POST數組中的鍵和值。這裏

$stamp  = get_post($conn, 'stamp'); 
$stamp  = date('Y-m-d H:i:s', strtotime($_POST[$stamp])); 

1號線返回內容$_POST['stamp'],那麼你正在使用2號線打開$ _ POST值轉換成日期。

你在做什麼在第2行告訴PHP查找一個$ _ POST變量與實際距離1號線

通知返回內容價值的關鍵:未定義指數:1970- 01-01 01:00:00在 C:\ xampp \ htdocs \ experiment \ woldofbooks \ news。php on line 70

描述它完美,這應該告訴你確切的錯誤和解決方案。

解決辦法:

你並不需要在2號線運行$_POST,爲$_POST值已經在1號線返回,所以:

$stamp  = get_post($conn, 'stamp'); 
$stamp  = date('Y-m-d H:i:s', strtotime($stamp)); 

具體回答您的原始查詢,您的MySQL正在被賦予一個NULL值,所以這就是爲什麼日期字段沒有被更新。

+0

瞭解 - 就是這樣!謝謝。 –

+0

@AgniScribe不用擔心,很高興我能爲你找到它! – Martin