更新查询更新不起作用

Posted

技术标签:

【中文标题】更新查询更新不起作用【英文标题】:Update query update not work 【发布时间】:2015-01-19 05:00:53 【问题描述】:

我在 php 中进行添加、更新和删除操作。

一切正常,但我的更新查询不工作。

我能知道,我在更新查询中哪里出错了吗?

这是我的 update.php 文件代码..

<?php

include('connection.php'); 

$ID = $_REQUEST['Student_Id'];

$result = mysql_query("select* from tblstudent where Student_Id='".$ID."'");

while($oldvalue=  mysql_fetch_array($result))


    $oldname=$oldvalue['Student_Name'];
    $oldgender=$oldvalue['Gender'];
    $olddob=$oldvalue['DOB'];
    $oldaddress=$oldvalue['Address'];
    $oldmobileno=$oldvalue['Phone'];
    $olddivision=$oldvalue['Division'];
    $oldclass=$oldvalue['Class'];
    $oldemail=$oldvalue['Email_Id'];



if(isset ($_POST['submit']))


    $update = $_POST['submit'];

        if($update)
        
            $newname=$_POST['Student_Name'];
            $newgender=$_POST['Gender'];
            $newdob=$_POST['DOB'];
            $newaddress=$_POST['Address'];
            $newmobileno=$_POST['Phone'];
            $newdivision=$_POST['Division'];
            $newclass=$_POST['Class'];
            $newemail=$_POST['Email_Id'];
    
          /* UPDATE QUERY */                        

           mysql_query("UPDATE tblstuent SET Student_Name='$newname', Gender='$newgender', DOB='$newdob', Address='$newaddress', Phone='$newmobileno', Division='$newdivision', Class='$newclass', Email_Id='$newemail'
                   WHERE id='$ID'");
            
            header('location:index.php');
        


?>

<body>
         <form action="update.php" method="post">
                
                <fieldset>
                
                    <legend>Personal Information</legend><br/>   
                    
                    <div class="studentname"><label>Student Name :</label><input type="text" name="newstudentname" id="studentnameId" value="<?php echo $oldname ?>" placeholder="Enter Name" size="30px" /></div><br/>
                    
                    <div class="gender">
           
                         <label>Gender :</label>
                         
                         <input type="radio" name="type" value="Male" <?php echo ($oldgender == 'Male') ? 'checked' : ''; ?> />  Male
                         <input type="radio" name="type" value="Female" <?php echo ($oldgender == 'Female') ? 'checked' : ''; ?>/> Female<br />

                    </div> <br/>
                    
                    <div class="dob"><label>Date of Birth :</label><input type="text" name="dob" id="dobId" value="<?php echo $olddob ?>" placeholder="Enter DOB format Year-Month-DaY" size="30px" /></div><br/>
                    
                    <div class="address"><label class="addresschild">Address : </label><textarea rows="4" cols="21" name="address" id="addressId" value="" placeholder="Enter Your Address"><?php echo $oldaddress ?></textarea></div><br/>

                    <div class="mobileno"><label>Parent's Mobile No : </label><input type="text" name="mobileno" id="mobilenoId" value="<?php echo $oldmobileno ?>" placeholder="Enter Parent's Mobile No" size="30px" /></div><br/>
                    
                    <div class="selectdivision">
                        
                        <label>Divison :</label>

                        <select id="divisiondropdownId" name="divisiondropdown">
                            <option value="0">Select Division</option>
                            <option value="A"<?php if($olddivision=="A") echo 'selected="selected"'; ?> >A</option>
                            <option value="B"<?php if($olddivision=="B") echo 'selected="selected"'; ?> >B</option>
                            <option value="C"<?php if($olddivision=="C") echo 'selected="selected"'; ?> >C</option>
                        </select>
                        
                    </div><br/>
                    
                    <div class="selectclass">
                        
                        <label>Class :</label>
                        
                        <select id="classdropdownId" name="classdropdown">
                        
                            <option value="0">Select Class</option>
                            <option value="First"<?php if($oldclass=="First") echo 'selected="selected"'; ?>>First</option>
                            <option value="Second"<?php if($oldclass=="Second") echo 'selected="selected"'; ?>>Second</option>
                            <option value="Third"<?php if($oldclass=="Third") echo 'selected="selected"'; ?>>Third</option>
                            <option value="Fourth"<?php if($oldclass=="Fourth") echo 'selected="selected"'; ?>>Fourth</option>
                            <option value="Fifth"<?php if($oldclass=="Fifth") echo 'selected="selected"'; ?>>Fifth</option>
                            <option value="Sixth"<?php if($oldclass=="Sixth") echo 'selected="selected"'; ?>>Sixth</option>
                            <option value="Seventh"<?php if($oldclass=="Seventh") echo 'selected="selected"'; ?>>Seventh</option>
                            <option value="Eighth"<?php if($oldclass=="Eighth") echo 'selected="selected"'; ?>>Eighth</option>
                            <option value="Nineth"<?php if($oldclass=="Nineth") echo 'selected="selected"'; ?>>Nineth</option>
                            <option value="Tenth"<?php if($oldclass=="Tenth") echo 'selected="selected"'; ?>>Tenth</option>
                        
                        </select>
                        
                    </div><br/>
                    
                    
                    <div class="emailid"><label>Email-Id : </label><input type="text" name="emailid" id="emailId" value="<?php echo $oldemail ?>" placeholder="Enter your Email-id" size="30px" /></div><br/>
                   
                    
                    <div id="submit1">
                        
                        <input class="btnsubmit" type="submit" name="submit" id="submit" value="Submit" />
                        
                        <input class="btnreset" type="reset" name="reset" id="submit" value="Reset" />
                    
                    </div><br/>

                </fieldset>

            </form>
</body>

谢谢

拉胡尔驳船

【问题讨论】:

你得到什么错误?(用于错误报告使用:&lt;?php error_reporting(E_ALL); ini_set("display_errors", 1); ?&gt;)在更新语句中的列名周围也加上` 再次检查您的查询,它有一个错字tblstuent,应该是tblstudent @Yohanes Khosiawan :- 谢谢,但现在更新查询也不起作用。 @Rizier123 :- 我没有收到任何错误。 【参考方案1】:

除了拼写错误,你还用过

 $ID = $_REQUEST['Student_Id'];

在您的代码中,我没有在您的表单中找到任何 id 为“Student_Id”的元素,因此 $ID 中将没有任何值,并且不会进行任何更新。

【讨论】:

【参考方案2】:

试试这个:

Student_Name='$newname', 

put $newname in double quotes like this.

Student_Name="$newname",

【讨论】:

【参考方案3】:

很抱歉没有发表评论。我还没有50分。

我在您的查询中发现了一些错误。

    表名。在选择查询中是tblstudent,在更新查询中是tblstuent '$newname' 最好像这样连接。 '".$newname."'。这应该适用于所有变量。 您的代码中没有STUDENT_ID。所以将其添加为隐藏字段。 确保列名的拼写方式与表中相同。简单/大写和拼写。

【讨论】:

【参考方案4】:

如果您要更新同一张表,则应在下面的查询中传递 Student_Id 而不是 id

 mysql_query("UPDATE tblstuent SET Student_Name='$newname', Gender='$newgender', DOB='$newdob', Address='$newaddress', Phone='$newmobileno', Division='$newdivision', Class='$newclass', Email_Id='$newemail'
                   WHERE id='$ID'");

或者你设置了错误的表名 tblstuent ,如果你更新同一张表,它应该是 tblstudent

【讨论】:

【参考方案5】:

在查询中检查所有列的数据类型,然后作为数据类型,如果数据类型如字符串、日期,则需要使用引号设置列值。否则不需要为良好的做法设置报价。在你的更新查询中你写错了表名,所以首先更新它。检查后

【讨论】:

【参考方案6】:

我有一个 PDO 示例,并为您准备了语句。另外,如果我是你,我会从准备好的语句开始学习 PDO。 MySQL 已被弃用,可能会给您带来麻烦。

此示例使用 Student_Id 作为自动增量和主要

SelectStudentPage.php

    <!DOCTYPE> 
    <html>

    <head>

    <title>Students</title>
    </head>
    <body>
<?php

$db_host = "localhost";
$db_username = "root";
$db_pass = "";
$db_name = "Studentsdb";

$db = new PDO('mysql:host='.$db_host.';dbname='.$db_name,$db_username,$db_pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

    //prepared statement with PDO to query the database
    $stmt = $db->prepare("SELECT * FROM tblstudent ");
    $stmt->execute();

 ?>

    <?php //start of the while loop ?>
    <?php while( $row = $stmt->fetch(PDO::FETCH_ASSOC) )  ?>

 <table border="1" style="table-layout: fixed; width: 1080px;">

    <br>
    <tr> 
        <th style="width:125px">STUDENT ID</th>
        <th style="width:125px">STUDENT NAME</th>
        <th style="width:100px">GENDER</th>
        <th style="width:100px">DOB</th>
        <th style="width:250px">ADDRESS</th>
        <th style="width:100px">PHONE</th>
        <th style="width:100px">DIVISION</th>
        <th style="width:100px">CLASS</th>
        <th style="width:250px">EMAIL ID</th>

    </tr>
    <tr style="width:25px">
    <?php $id = $row['Student_Id'];?>
    <?php echo  "<td> <a href='StudentUpdateForm.php?Student_Id=$id'>$id</a></td>"?>
        <td><?php echo $row['Student_Name']; ?></td>
        <td><?php echo $row['Gender']; ?></td>
        <td><?php echo $row['DOB']; ?></td>
        <td><?php echo $row['Address']; ?></td>
        <td><?php echo $row['Phone']; ?></td>
        <td><?php echo $row['Division']; ?></td>
        <td><?php echo $row['Class']; ?></td>
        <td><?php echo $row['Email_Id']; ?></td>

    </tr>

    </table>

      <?php  //end of the while loop?>
    </body>

</html>

StudentUpdateForm.php

<?php
$db_host = "localhost";
$db_username = "root";
$db_pass = "";
$db_name = "Studentsdb";

$db = new PDO('mysql:host='.$db_host.';dbname='.$db_name,$db_username,$db_pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
    $id=$_GET['Student_Id'];
    $result = $db->prepare("SELECT * FROM tblstudent Where Student_Id=:Student_Id");
    $result->bindParam(':Student_Id', $id);
    $result->execute();
    for($i=0; $row = $result->fetch(); $i++)

?>
<!DOCTYPE>
<html>
<head>
    <title>Example Update Form</title>
</head>

<body>
    <form action="UpdateProcess.php" method="post">
        <legend>Personal Information</legend><br>
            <div>
            <label>Student Id :<label><input name="Student_Id" type="text" value=
            "<?php print($row['Student_Id']) ?>">
        </div><br>
        <div>
            <label>Student Name :</label><input name="Student_Name" type="text" value=
            "<?php print($row['Student_Name']) ?>">
        </div><br>

        <div>
            <label>Gender :</label>
            <select name ="Gender" style="width: 149px" >
                <option value <?php if ($row['Gender']==1) print('selected');  ?> ="Male">Male</option>
                <option value <?php if ($row['Gender']==2) print('selected');  ?> ="Female">Female</option>
            </select>
        </div><br>

        <div>
            <label>Date of Birth :</label><input name="DOB" type="text" value=
            "<?php print($row['DOB']) ?>">
        </div><br>

        <div>
            <label>Address :</label><textarea name="Address"><?php echo $row['Address']; ?></textarea><br>
        </div><br>

        <div>
            <label>parents mobile no:</label><input name="Phone" type="text"value=
            "<?php print($row['Phone']) ?>">
        </div><br>

        <div>
            <label>Divison :</label><br>
            <select name ="Division" style="width: 149px" >
                <option value <?php if ($row['Division']==1) print('selected');  ?> ="A">A</option>
                <option value <?php if ($row['Division']==2) print('selected');  ?> ="B">B</option>
                <option value <?php if ($row['Division']==3) print('selected');  ?> ="C">C</option>
        </select>
        </div><br>

        <div>
            <label>Class :</label><br>
             <select name ="Class" style="width: 149px" >
                <option value <?php if ($row['Class']==1) print('selected');  ?> ="First">First</option>
                <option value <?php if ($row['Class']==2) print('selected');  ?> ="Second">Second</option>
                <option value <?php if ($row['Class']==3) print('selected');  ?> ="Third">Third</option>
            </select>
        </div><br>

        <div>
            <label>Email id :</label><input name="Email_Id" type="text" value=
            "<?php print($row['Email_Id']) ?>">
        </div><br>

        <div id="submit1">
            <input class="btnsubmit" id="submit" name="submit" type="submit"
            value="Update"> <input class="btnreset" id="submit" name="reset"
            type="reset" value="Reset">
        </div><br>

    </form>
</body>
</html>
<?php  ?>

UpdateProcess.php

<?php
$db_host = "localhost";
$db_username = "root";
$db_pass = "";
$db_name = "Studentsdb";
try
$db = new PDO('mysql:host='.$db_host.';dbname='.$db_name,$db_username,$db_pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);

$sql = 'UPDATE tblstudent SET Student_Id=:Student_Id, Student_Name=:Student_Name, Gender=:Gender, DOB=:DOB, Address=:Address, Phone=:Phone, Division=:Division, Class=:Class, Email_Id=:Email_Id WHERE Student_Id=:Student_Id';
$stmt = $db->prepare($sql);  
$stmt->bindParam(':Student_Id', $_POST['Student_Id'], PDO::PARAM_STR);  
$stmt->bindParam(':Student_Name', $_POST['Student_Name'], PDO::PARAM_STR);       
$stmt->bindParam(':Gender', $_POST['Gender'], PDO::PARAM_STR); 
$stmt->bindParam(':DOB', $_POST['DOB'], PDO::PARAM_STR);   
$stmt->bindParam(':Address', $_POST['Address'], PDO::PARAM_STR);
$stmt->bindParam(':Phone', $_POST['Phone'], PDO::PARAM_STR);    
$stmt->bindParam(':Division', $_POST['Division'], PDO::PARAM_STR);
$stmt->bindParam(':Class', $_POST['Class'], PDO::PARAM_STR);
$stmt->bindParam(':Email_Id', $_POST['Email_Id'], PDO::PARAM_STR);

$stmt->execute();
echo $stmt->rowCount()  .  " record Updated successfully.";
catch(PDOException $exception) 
            echo "Error: " . $exception->getMessage();
       
echo "<a href=http://localhost/students/SelectStudentPage.php>Go to Grid view Results page</a>";
?>

【讨论】:

【参考方案7】:
    $sql = "SELECT * FROM table WHERE id = '$id' " ;

   while($oldvalue=  mysql_fetch_array($result))


    $oldname=$oldvalue['Student_Name'];
    $oldgender=$oldvalue['Gender'];
    $olddob=$oldvalue['DOB'];
    $oldaddress=$oldvalue['Address'];
    $oldmobileno=$oldvalue['Phone'];
    $olddivision=$oldvalue['Division'];
    $oldclass=$oldvalue['Class'];
    $oldemail=$oldvalue['Email_Id'];





    if(mysql_query("DESCRIBE `table`")) 

                $sql = "UPDATE table SET ";
                $sql.= " Student_Name = '$oldname', Gender = '$oldgender',.... ";
                $sql.= " WHERE id = '$id' ";

        if(mysql_query($sql))
           echo 'Good';
            
        else 
        
        echo 'Bad';
        
    

试试这样的;)

【讨论】:

【参考方案8】:

你好朋友谢谢你,

您的所有回答都帮助我解决了问题。

我从你们那里学到了很多。

最后我解决了上述问题,对 update.php 文件代码进行了一些更改..

这是我的新代码

<?php

include('connection.php'); 

if(isset ($_REQUEST['Student_Id']))

    $id = $_REQUEST['Student_Id'];
    
    $result = mysql_query("select* from tblstudent where Student_Id ='".$id."'");
    
    while($oldvalue=  mysql_fetch_array($result))
    

    $oldid = $oldvalue['Student_Id'];
    $oldname=$oldvalue['Student_Name'];
    $oldgender=$oldvalue['Gender'];
    $olddob=$oldvalue['DOB'];
    $oldaddress=$oldvalue['Address'];
    $oldmobileno=$oldvalue['Phone'];
    $olddivision=$oldvalue['Division'];
    $oldclass=$oldvalue['Class'];
    $oldemail=$oldvalue['Email_Id'];

       


if(isset ($_POST['newname']))


            $newname =$_POST['newname'];
            
            $newid =$_POST['newid'];
            
            $newgender =$_POST['newgender'];
            
            $newdob = $_POST['newdob'];
            
            $newaddress = $_POST['newaddress'];
            
            $newphone = $_POST['newphone'];
            
            $newdivision = $_POST['newdivision'];
            
            $newclass = $_POST['newclass'];
            
            $newemailid = $_POST['newemailid'];
            
            $sql= "UPDATE tblstudent SET Student_Name='$newname', Gender='$newgender', DOB='$newdob', Address='$newaddress', Phone='$newphone', Division='$newdivision', Class='$newclass', Email_Id='$newemailid' WHERE Student_Id='$newid'";
            
            $result= mysql_query($sql);
            
            header('location:index.php');



?>



<body>
         <form action="update.php" method="post">
                
                <fieldset>
                
                    <legend>Personal Information</legend><br/>
                    
                    <div class="studentname"><label>Student Name :</label><input type="text" name="newname" id="studentnameId" value="<?php echo $oldname ?>" placeholder="Enter First & Last Name" size="30px" /></div><br/>
                    
                    <input type="hidden" name="newid" value="<?php echo $oldid ?>"/>
                    
                    <div class="gender">
           
                         <label>Gender :</label>
                         
                         <input type="radio" name="newgender" value="Male" <?php echo ($oldgender == 'Male') ? 'checked' : ''; ?> />  Male
                         <input type="radio" name="newgender" value="Female" <?php echo ($oldgender == 'Female') ? 'checked' : ''; ?>/> Female<br />


                    </div> <br/>
                    
                    <div class="dob"><label>Date of Birth :</label><input type="text" name="newdob" id="dobId" value="<?php echo $olddob ?>" placeholder="Enter DOB format Year-Month-DaY" size="30px" /></div><br/>
                    
                    <div class="address"><label class="addresschild">Address : </label><textarea rows="4" cols="21" name="newaddress" id="addressId" value="" placeholder="Enter Your Address"><?php echo $oldaddress ?></textarea></div><br/>

                    <div class="mobileno"><label>Parent's Mobile No : </label><input type="text" name="newphone" id="mobilenoId" value="<?php echo $oldmobileno ?>" placeholder="Enter Parent's Mobile No" size="30px" /></div><br/>
                    
                    <div class="selectdivision">
                        
                        <label>Divison :</label>

                        <select id="divisiondropdownId" name="newdivision">
                            <option value="0">Select Division</option>
                            <option value="A"<?php if($olddivision=="A") echo 'selected="selected"'; ?> >A</option>
                            <option value="B"<?php if($olddivision=="B") echo 'selected="selected"'; ?> >B</option>
                            <option value="C"<?php if($olddivision=="C") echo 'selected="selected"'; ?> >C</option>
                        </select>
                        
                        
                        
                    </div><br/>
                    
                    <div class="selectclass">
                        
                        <label>Class :</label>
                        
                        <select id="classdropdownId" name="newclass">
                        
                            <option value="0">Select Class</option>
                            <option value="First"<?php if($oldclass=="First") echo 'selected="selected"'; ?>>First</option>
                            <option value="Second"<?php if($oldclass=="Second") echo 'selected="selected"'; ?>>Second</option>
                            <option value="Third"<?php if($oldclass=="Third") echo 'selected="selected"'; ?>>Third</option>
                            <option value="Fourth"<?php if($oldclass=="Fourth") echo 'selected="selected"'; ?>>Fourth</option>
                            <option value="Fifth"<?php if($oldclass=="Fifth") echo 'selected="selected"'; ?>>Fifth</option>
                            <option value="Sixth"<?php if($oldclass=="Sixth") echo 'selected="selected"'; ?>>Sixth</option>
                            <option value="Seventh"<?php if($oldclass=="Seventh") echo 'selected="selected"'; ?>>Seventh</option>
                            <option value="Eighth"<?php if($oldclass=="Eighth") echo 'selected="selected"'; ?>>Eighth</option>
                            <option value="Nineth"<?php if($oldclass=="Nineth") echo 'selected="selected"'; ?>>Nineth</option>
                            <option value="Tenth"<?php if($oldclass=="Tenth") echo 'selected="selected"'; ?>>Tenth</option>
                        
                        </select>
                        
                    </div><br/>
                    
                    
                    <div class="emailid"><label>Email-Id : </label><input type="text" name="newemailid" id="emailId" value="<?php echo $oldemail ?>" placeholder="Enter your Email-id" size="30px" /></div><br/>
                   
                    
                    <div id="submit1">
                        
                        <input class="btnsubmit" type="submit" name="submit" id="submit" value="Submit" />
                        
                        <input class="btnreset" type="reset" name="reset" id="submit" value="Reset" />
                    
                    </div><br/>

                </fieldset>

            </form>
</body>

谢谢你:-)

【讨论】:

以上是关于更新查询更新不起作用的主要内容,如果未能解决你的问题,请参考以下文章

更新查询在 codeigniter 中不起作用

为啥我的 UPDATE sql 查询不起作用?不会更新表

Access 2010 SQL - 更新查询不起作用

更新查询在 mysql 工作台中不起作用

iOS 查询更新不起作用

使用子查询更新在雪花中不起作用