2014-07-15 3 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 = "UPDATE 약속 SET 약속 시간대 = '{$ _ POST ['약속 시간대 ']}'"; –

+0

'mysql_ *'함수는 PHP의 현재 버전에서 생략되므로 더 이상 사용하지 마십시오. 대신에'PDO' 또는'mysqli'를 사용하십시오. – TiMESPLiNTER

+0

@SyedQarib 결과가 같습니다. 그것은 모든 것을 업데이트합니다. –

답변

0

특정 레코드를 업데이트하려면, 쿼리는 업데이트 할 것을 지정하는 WHERE 절을해야

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

하세요 참고 : $ _POST [appointmentstatusid] 변수를 $ _POST에서 직접 전달하면 코드가 SQL 삽입에 취약해질 수 있습니다.

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

또는 데이터베이스 추상화 라이브러리를 사용하십시오.

+0

문제를 해결해야합니다. 그것은 나에게 WHERE 절에 대한 아이디어를 주었다. 감사 :) –

1

유효하고 일치하려는 행의 ID는이어야합니다. 당신이 결정하는 방법은 당신에게 달려 있습니다. 그런 다음, 같은 수행

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 –

관련 문제