2014-07-15 49 views
0
<?php 
    mysql_connect("localhost", "root", "") or die(mysql_error()); 
    mysql_select_db("dentalclinic") or die(mysql_error()); 

    if (isset($_POST['update'])){ 
    $UpdateQuery = "UPDATE appointment SET appointmentstatusid='$_POST[appointmentstatusid]'"; 
    mysql_query($UpdateQuery); 
    }; 

    $sql = "SELECT * from appointment a join appointmentstatus s on (a.appointmentstatusid=s.appointmentstatusid) join patient p on (a.patientid=p.patientid)"; 
    $query = mysql_query($sql) or die(mysql_error()); 

    echo "<table border=1> 
    <tr> 
    <th>FIRST NAME</th> 
    <th>LAST NAME</th> 
    <th>APPOINTMENT STATUS</th> 
    <th>UPDATE</th> 
    </tr>"; 

    while($record = mysql_fetch_array($query)){ 
    echo "<form action=editstatus.php method=post>"; 
    echo "<tr>"; 
    echo "<td>"."<input type=text name=firstname value=".$record['firstname']."></td>"; 
    echo "<td>"."<input type=text name=lastname value=".$record['lastname']."></td>"; 
    echo "<td>"; 
    $query2 = "SELECT * from appointmentstatus"; 
    $result = mysql_query($query2); 
    echo "<select name=appointmentstatusid>"; 
    while ($line = mysql_fetch_array($result)) { 
    echo "<option value=".$line['appointmentstatusid'].">"; 
    echo $line['appointmentstatus']; 
    echo "</option>"; 
    } 
    echo "</select>"; 
    echo "</td>"; 

    echo "<td>"."<input type=submit name=update value=update"."></td>"; 
    echo "</tr>"; 
    echo "</form>"; 
    }  
echo "</table>" 
?> 

每当我更新patient1的appointmentstatusid,它会影响其他患者(patient2,patient3 ...)的约会状态。我尝试在更新中添加代码WHERE appointmentstatusid='$_POST[appointmentstatusid]',但是当我这样做时,它不会再更新。如何更新特定行(患者)?

+0

尝试$ UpdateQuery =“更新约会SET appointmentstatusid ='{$ _ POST ['appointmentstatusid']}'”; –

+0

不要再使用'mysql_ *'函数,因为它们在当前版本的PHP中被取消了。改用“PDO”或“mysqli”。 – TiMESPLiNTER

+0

@SyedQarib的结果是一样的。它会更新一切。 –

回答

0

要更新特定的记录,查询应该有一个WHERE子句指定要更新什么

$UpdateQuery = "UPDATE appointment SET appointmentstatusid='$_POST[appointmentstatusid]' WHERE `appointmentid` = 1"; 

请注意:直接从$ _POST传递$ _POST [appointmentstatusid]变量会使你的代码容易受到sql注入的影响。尝试

$appointmentstatusid = (int) mysql_real_escape_string($_POST[appointmentstatusid]); 
$UpdateQuery = "UPDATE appointment SET appointmentstatusid='".appointmentstatusid ."' WHERE `appointmentid` = $id"; 

或使用数据库抽象库的练习。

+0

问题。它给了我一个关于WHERE子句的想法。谢谢 :) –

1

您必须有有效,并且匹配您试图影响的行的编号。你如何确定这取决于你。那么,这样做:

UPDATE table_name 
SET column1=value1,column2=value2,... 
WHERE some_column=some_value; 
0

试试这行6

$UpdateQuery = "UPDATE appointment SET willChangeColumn = 'newValueForThatColumn' WHERE appointmentstatusid=".$_POST['appointmentstatusid']; 
+0

它仍然更新所有的约会状态ID。 –

+0

此查询将全部更新,因为没有声明任何条件,如果您想要更新特殊行,您必须声明条件并解决WHERE –