2012-11-13 164 views
0

在編寫了一大堆更加複雜的代碼之後,這個代碼給了我很多問題。簡單更新查詢不起作用?

簡單的形式

<form action="res/scripts/editsubscriber.php" method="post"> 
<label for="name">Name: </label> 
<input name="name" type="text" value="<?php echo $name; ?>"> 
...etc, etc... 
</form> 

提交給該腳本:

include('appvars.php'); 
    if(isset($_POST['submit'])){ 
$id = $_POST['id']; 
$name = $_POST['name']; 
$email = $_POST['email']; 
$month = $_POST['month']; 
$day = $_POST['day']; 
$year = $_POST['year']; 
$date = $_POST['date']; 
$time = substr($date, 0, (stripos($date, " ")+1)); 
$time = str_replace($time, '', $date); 
$created = $year.'-'.$month.'-'.$day.' '.$time; 
$query = "UPDATE newslettersubscribers SET name = '$name', email = '$email', created = '$created' WHERE id = $id)"; 
mysqli_query($dbc, $query); 
} 

它的帖子,我贊同所有的變量,他們改變了就好了,但它仍然不會更新數據庫。有人請告訴我我錯過了什麼......

+2

在一個側面說明:您的代碼是脆弱的[SQL注入(https://secure.wikimedia.org /維基/ EN /維基/ Sql_injection)! – Veger

+0

在UPDATE語句結尾處關閉括號,但我沒有看到任何開頭的括號? – mcriecken

+0

括號在行尾? –

回答

0

你的SQL查詢中有一個奇怪的尾隨)。你在SQL客戶端中執行過它嗎?

0

您是否有ID表單輸入?

<input name="id" type="text" value="<?php echo $id; ?>"> 

此外,你不是逃避sql/html。

0

該代碼會嚴重損害你的數據庫的安全性。由於沒有任何參數在被包括在查詢中之前被消毒,具有基本安全知識的任何人都可以在幾秒鐘內接管您的應用程序。

爲了解決安全問題你的錯誤,你可能想看看 http://php.net/manual/en/pdo.prepared-statements.php