我想在过去两天更新数据库中的表格。但我无法让它发挥作用。有人请帮帮我。 我可以连接到我的数据库,完美地查看我的表字段。可以从目标PHP文件中完整地读取表单中的已发布值。 没有看到MySQL查询返回任何错误。 但我不明白为什么这些值没有更新到表中。
//form.html
<form name="account" action="test.php" method="post">
<td align="left" valign="top" class="labelstyle" width="25%">First Name</td>
<td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="fname" value="" /></td>
<td align="left" valign="top" class="labelstyle" width="25%">Last Name</td>
<td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="lname" value="" /></td>
<td align="left" valign="top" class="labelstyle" width="25%">Email</td>
<td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="email" value="" /></td>
<td align="left" valign="top" class="labeltextstyle"><input type="submit" name="submit" value="Save" /></td>
</form>
// test.php
<?php
$dbhost = "localhost";
$dbname = "test";
$dbuser = "";
$dbpass = "";
mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
mysql_select_db($dbname) or die(mysql_error());
session_start();
if(isset($_REQUEST['submit'])){
// $query = "select * from form";
// $result = mysql_query($query);
// $numcolumn = mysql_num_fields($result);
// for ( $i = 0; $i < $numcolumn; $i++ ) {
// $columnnames = mysql_field_name($result, $i);
// echo $columnnames;
// }
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['email'];
echo $fname ;
echo $lname ;
echo $email ;
$query = "update test set
fname = $fname,
lname = $lname,
email = $email
where 1 ";
$result = mysql_query($query);
if ($query = 1) {
echo "IT WORKED";
} else {
echo "DIDNT WORK";
}
}else{
echo "NOT SUBMITTED";
}
?>
//form.html
<form name="account" action="test.php" method="post">
<td align="left" valign="top" class="labelstyle" width="25%">First Name</td>
<td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="fname" value="" /></td>
<td align="left" valign="top" class="labelstyle" width="25%">Last Name</td>
<td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="lname" value="" /></td>
<td align="left" valign="top" class="labelstyle" width="25%">Email</td>
<td align="left" valign="top" class="labeltextstyle" width="75%"><input type="text" name="email" value="" /></td>
<td align="left" valign="top" class="labeltextstyle"><input type="submit" name="submit" value="Save" /></td>
</form>
当我用表格A,B和C填写表格并提交表格时,我得到以下输出。
fnamelnameemailABCIT WORKED
请尽快帮助我。
答案 0 :(得分:1)
where子句中没有id来指示必须更新哪一行。这将更新表中的所有行。它应该是这样的:
$query = "update test set
fname = $fname,
lname = $lname,
email = $email
where id = 1";
我假设事先创建了一行,以便您知道要更新哪一行。如果没有,那么应该使用INSERT语句。
$query = "insert into test (fname,lname,email) VALUES ($fname,$lname,$email);
答案 1 :(得分:0)
fname,lname和email是字符串,必须在SQL查询中进行转义:
$query = "update test set
fname = '$fname',
lname = '$lname',
email = '$email'
where 1";
你可能也可以离开那里的地方。