我有多個文本框顯示對應於mysql數據庫中的一行的字符串。我希望能夠通過輸入文本框並單擊提交來更改數據庫中的每個字符串。用不同數量的文本框更新mysql數據庫
因此,我連接到數據庫後創建了帶有while循環的文本框。
<form action="<?php $self ?>" form method="post">
<?php
$query = "SELECT * FROM `table` ORDER BY table.ID DESC";
$result = @mysql_query($query) or die('
ERR: The database returned an unexpected error.
');
$num=mysql_numrows($result);
$change="";
$i=0;
while ($i < $num) {
$post=mysql_result($result,$i,"post");
$id=mysql_result($result,$i,"ID");
$ts=mysql_result($result,$i,"timeStamp");
$page = html_entity_decode($post);
$output = stripslashes($page);
if ($output != "") {
echo '<textarea name="' . $id . '" rows="4" cols="70">' . $output . '</textarea><div class="time"><font face="monospace">' . $ts . '</font></div>';
} //creates tables for each filled entry with a name corrsponing to its auto-increment id.
$i++;
}
?>
<input name="send" type="hidden" />
<div class="mod">
<p><input class="master" type="submit" value="Mod" /></p></div><!--submit button is called "Mod"-->
</form>
</body>
</html>
一切正常顯示。如果數據庫中有4行包含文本,則它們將顯示這4個文本,每個文本都位於單獨的文本框中。
現在我想用用戶在文本框中輸入的內容替換數據庫中的文本。這是我試過的代碼。它什麼也沒做。
<?php
$i=0;
while ($i < $num) {
$id=mysql_result($result,$i,"ID");
$post=mysql_result($result,$i,"post");
if (!isset($_POST[$id])) {
$_POST[$id] = "";
}
$change = $_POST[$id];
mysql_query("UPDATE 'database'.'table' SET 'post' = '$change' WHERE 'table'.'ID' ='$id';");
$i++;
}
基本上,循環將爲表中的每一行運行一次。對於每個文本框,它應該更新'數據庫'。'表'與$ _POST [1]爲'後'ID爲'1',$ _POST [2]爲'後'ID爲'2'等... 反而沒有任何反應。 任何幫助,將不勝感激。
請使用準備好的語句。你的代碼是不安全的。 – Kurt 2012-08-02 01:22:11