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 ");
}
}
?>


<?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
|
1
vibbow 2014 年 1 月 24 日 槽点很多
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数值的时候不转移特殊字符么... 看着太纠结了,给你重写一份出来吧。 |
|
2
vibbow 2014 年 1 月 24 日 |
|
3
vibbow 2014 年 1 月 24 日 重写的时候又发现了代码的两个槽点:
1. for loop写错了 2. for loop没必要每次都去求一次数组的大小,太浪费性能了... LZ是在HTML中间去运行sql查询的,我重写的时候也这样写了。 不过一般情况下我喜欢在开头把所有该查的东西都查完了,保存成数组,然后在HTML里直接输出。虽然会浪费点内存,反正这年头内存也不值钱。 |