yappa
V2EX  ›  PHP

php小白求教form display and update mysql的问题

By yappa at 2014 年 1 月 24 日 · 4193 次点击
php小白,各种谷歌,也试了好多stackoverflow上的代码,都只能正常display,无法update。代码如下:
<?php
define('DB_NAME', 'form');
define('DB_USER', 'root');
define('DB_PASSWORD', '123456');
define('DB_HOST', 'localhost');


$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link)
{
die('could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db(DB_NAME, $link);

if (!$db_selected)
{
die('Can\'t use ' .DB_NAME .':' . mysql_error());
}
$query = "SELECT * FROM articles";
$result = mysql_query($query) or die(mysql_error());
?>
<div class="content-holder">
<form action="" method="post">
<table border='1' cellpadding='10' id='ViewTable'>
<tr>
<th>title</th>
<th>id</th>
</tr>
<?php
while($row = mysql_fetch_array($result))
{
$id = $row['id'];
$title = $row['title'];
?>
<tr>
<td>
<input type="textbox" class="TextAreaTitle" name="title" value="<?=$title?>"></input>
<input type="hidden" name="id" value="<?=$title?>"></input>
</td>
<td><?=$id?></td>
</tr>
<?php
}
?>
</table>
<input type="submit" name="update" class="submitlink" Value="update">
</form>
</div>

<?php
if(isset($_POST['update']))
{
for ($i=count($_POST['id']); $i--;)
{
$id = $_POST['title'][$i];
$title = $_POST['id'][$i];
mysql_query("UPDATE articles SET title= $title WHERE id= $id ");
}
}
?>

4 条回复  •  1970-01-01 08:00:00 +08:00
vibbow
   1
vibbow  
   2014 年 1 月 24 日   ❤️ 2
槽点很多

http://pic.vsean.net/di/MBB4/QQ截图20140123212941.png

你的这个hidden input明明是id,为什么你要设置变量为value。
其次Input标签是自闭和的。

还有如果你的input有N多相同name的元素的话,那么name应该这样写:
<input type="hidden" name="id[]" value="<?=$title?>" />
这样PHP才会把这些name相同的元素识别成一个数组了,否则应该是后者替换前者的关系。

最后你mysql语句update数值的时候不转移特殊字符么...

看着太纠结了,给你重写一份出来吧。
vibbow
   2
vibbow  
   2014 年 1 月 24 日   ❤️ 2
重写完成
http://pastebin.com/XPFa1EaS

虽然我写的代码也很挫...
vibbow
   3
vibbow  
   2014 年 1 月 24 日   ❤️ 2
重写的时候又发现了代码的两个槽点:

1. for loop写错了
2. for loop没必要每次都去求一次数组的大小,太浪费性能了...

LZ是在HTML中间去运行sql查询的,我重写的时候也这样写了。

不过一般情况下我喜欢在开头把所有该查的东西都查完了,保存成数组,然后在HTML里直接输出。虽然会浪费点内存,反正这年头内存也不值钱。
yappa
   4
yappa  
OP
   2014 年 1 月 24 日
@vibbow 感谢已发送
© 2026 V2EX · 91ms · 3.9.8.5