将数据库记录与textfield值匹配并在php中更新数据库
我正在创建一个网页,其中管理员可以更新学生的记录(这里是需求草案编号),它将更新特定学生id的记录。 我正在处理的代码如下,问题是数据库中所有记录的DD编号都会更新,而不是文本字段中提到的id。 如果有人能提供一个可能的解决方案,我将不胜感激 代码如下:将数据库记录与textfield值匹配并在php中更新数据库,php,Php,我正在创建一个网页,其中管理员可以更新学生的记录(这里是需求草案编号),它将更新特定学生id的记录。 我正在处理的代码如下,问题是数据库中所有记录的DD编号都会更新,而不是文本字段中提到的id。 如果有人能提供一个可能的解决方案,我将不胜感激 代码如下: <div class="main row"> <?php $connect_mysql=mysql_connect("localhost","root",""); $mysql_db=mysql
<div class="main row">
<?php
$connect_mysql=mysql_connect("localhost","root","");
$mysql_db=mysql_select_db("mca",$connect_mysql);
?>
<form name="form1" method="POST" action="">
Enter the student's Registration ID :<span style="padding-left:20px"> <input type="text" id="studentsearch" name="studentsearch"></span>
</br> </br><span style="padding-left:190px"><input name="submit" type="submit" value="search"></span></br>
<?php
if(isset($_POST['submit']))
{
$id=$_POST['studentsearch'];
$query1="select 1 from user where id=$id" ;
$result1=mysql_query($query1) or die("Query Failed:".mysql_error());
if(mysql_num_rows($result1)>0)
{
echo 'student present';
}
else
{
echo 'student not present';
}
}
?>
</br>
</br>Enter the Demand Draft no : <span style="padding-left:46px"><input type="text" name="dd"></span>
</br></br><span style="padding-left:190px">
<input name="update" type="submit" value="update"></span><span style="padding-left:10px">
<input name="clear" type="submit" value="cancel" ></span>
<?php
if(isset($_POST['update']))
{
$connect_mysql=mysql_connect("localhost","root","") or die("cannot connect");
$mysql_db=mysql_select_db("mca",$connect_mysql);
$id1=$_POST['studentsearch'];
$dd=$_POST['dd'];
$sql="SELECT id FROM user ";
$result1 =mysql_query($sql,$connect_mysql) or die(mysql_error($connect_mysql));
while($row = mysql_fetch_array($result1))
if($id1=$row['id'])
{
$q="UPDATE user SET DD='$dd'";
$result2=mysql_query($q,$connect_mysql) or die("Query Failed".mysql_error());
}
mysql_close($connect_mysql);
}
?>
</form>
</div>
输入学生的注册ID:
输入即期汇票编号:
虽然mysql不推荐使用,但问题就在这里
$q="UPDATE user SET DD='$dd'";
这应该是
$q="UPDATE user SET DD='$dd' WHERE id='$id1'";
这一行同样需要WHERE子句
$sql="SELECT id FROM user ";
作为
编辑:
试试这个,让我知道你的结果是什么
if(isset($_POST['update'])) {
$connect_mysql=mysql_connect("localhost","root","") or die("cannot connect");
$mysql_db=mysql_select_db("mca",$connect_mysql);
$id1=$_POST['studentsearch'];
$dd=$_POST['dd'];
$sql="SELECT id FROM user WHERE id='$id1'";
$result1 =mysql_query($sql,$connect_mysql) or die(mysql_error($connect_mysql));
while($row = mysql_fetch_array($result1)) {
if(($row['id']) == $id1) {
$q="UPDATE user SET DD='$dd' WHERE id='$id1'";
$result2=mysql_query($q,$connect_mysql) or die("Query Failed".mysql_error());
}
mysql_close($connect_mysql);
} // Close While Loop
}
在$dd
变量下面添加用于故障排除数据问题的代码:
echo $id1;
echo $dd;
在更新提交按钮输入上方添加以下内容:
<input type="hidden" name="ssresult" value="<?php if(isset($_POST['studentsearch'])) { echo $_POST['studentsearch']; } ?>">
不推荐使用mysql\
函数。我建议您查看PDO
,而不是在查询中缺少条件语句。现在,在select和update中,您都告诉它将操作应用于每个表中的每个记录。在更新时,您忘记了thWHERE
子句,$q=“update user SET DD='$DD'WHERE id=$id”代码>您不需要WHILE
循环。使用mysqli
或PDO
而不是mysql
,即使我使用where子句,它也会提供相同的结果。它会继续更新数据库中的所有记录,而不是特定的idI。我已经更新了我的答案,在我看来代码应该如何布局,while循环中缺少大括号,因此结果集无法正确返回,where子句应该是$id1,再次查看代码,因为没有任何内容得到更新。数据库不受影响。在更新数据库时,您可以始终回显$\u POST数据的值,以便查看在$dd=$\u POST['dd']'添加回显$id1下推送的数据;echo$dd;echo$id1;不返回任何结果…那么我现在如何使其工作..文本字段中的值是使用$\u POST、rite获取的?
<input type="hidden" name="ssresult" value="<?php if(isset($_POST['studentsearch'])) { echo $_POST['studentsearch']; } ?>">
if(isset($_POST['update'])) {
$connect_mysql=mysql_connect("localhost","root","") or die("cannot connect");
$mysql_db=mysql_select_db("mca",$connect_mysql);
$id1=$_POST['ssresult'];
$dd=$_POST['dd'];
$sql="SELECT id FROM user WHERE id='$id1'";
$result1 =mysql_query($sql,$connect_mysql) or die(mysql_error($connect_mysql));
while($row = mysql_fetch_array($result1)) {
if(($row['id']) == $id1) {
$q="UPDATE user SET DD='$dd' WHERE id='$id1'";
$result2=mysql_query($q,$connect_mysql) or die("Query Failed".mysql_error());
}
mysql_close($connect_mysql);
} // Close While Loop
}