更新和设置数据库不起作用

时间:2014-04-26 21:14:47

标签: php mysql

我正在尝试大约2个小时让我的PHP脚本中的查询工作,但没有任何事情发生在我的表中的第一行更改值:

     <?php
 include_once('connect.php');
echo mysql_error();
    if(isset($_GET['edit'])){
        $Matricule = $_GET['edit'];
        $res = mysql_query("select etudiant.`Matricule`,etudiant.`Nom_Etudiant`,etudiant.`Prenom_Etudiant`,evaluation.`Td`,evaluation.`Tp`,evaluation.`Exam` from etudiant,evaluation where etudiant.`Matricule`=evaluation.`Matricule`;");
        $rows = mysql_fetch_assoc($res);
    }
    echo mysql_error();
    if(isset($_POST['Td'])){
        $Td = $_POST['Td'];
        $Matricule = $_POST['Matricule'];
        $sql = "UPDATE evaluation SET Td='$Td' WHERE Matricule='$Matricule'";
        //$sql = "UPDATE `evaluation` SET `Td=15 WHERE `Matricule`=1";
        $res = mysql_query($sql) or die("Could not update".mysql_error());

            echo "<meta http-equiv='refresh' content='0;url=note-on.php'>";
    echo $sql;
    }
   ?>
 <form action="edit.php" method="POST">
TD: <input type="text" name="Td" value="<?php echo $rows[1];?>"><br>
<input type="hidden" name="Matricule" value="<?php echo $rows[Matricule];?>">
<input type="submit" value="Edit">
 </form> 
像你在脚本中看到的那样,每当我点击编辑并更改第一行的值时,即使我正在编辑其他行,它也会在我点击编辑按钮后发出消息

UPDATE评估SET Td ='11'WHERe Matricule ='1'

1 个答案:

答案 0 :(得分:0)

替换它:

$res = mysql_query("select etudiant.`Matricule`,etudiant.`Nom_Etudiant`,etudiant.`Prenom_Etudiant`,evaluation.`Td`,evaluation.`Tp`,evaluation.`Exam` from etudiant,evaluation where etudiant.`Matricule`=evaluation.`Matricule`;");

由此:

$res = mysql_query("select etudiant.`Matricule`,etudiant.`Nom_Etudiant`,etudiant.`Prenom_Etudiant`,evaluation.`Td`,evaluation.`Tp`,evaluation.`Exam` from etudiant INNER JOIN evaluation ON etudiant.`Matricule`=evaluation.`Matricule` WHERE etudiant.`Matricule`='$Matricule'");

如果你是一个新手,所以你还在学习,最好不要学习像mysql_ *这样被弃用的东西。使用PDO或mysqli和准备好的声明检查教程和视频。

修改

正如我在上面的评论中所述,您的问题是您没有选择Marticule = $ Marticule,您在$_GET中发送的内容,您只是选择了第一行这个表就是为什么你总是更新第一行,无论你点击哪一个编辑。 =&GT;这就是差异WHERE etudiant. Matricule ='$Matricule'

至于如何回应etudiant的名字,你错误的是当你使用echo $rows[2]时你正试图mysql_fetch_assoc,所以$rows没有0,1,2,...索引,它有column_names作为索引。因此,如果您希望获得Nom_Etudiant,请使用$rows['Nom_Etudiant'];

所以你的代码就像这样:

<input type="text" name="Td" value="<?php echo $rows['Td'];?>">