2015-09-16 76 views
0
if (isset($_POST['update'])){ 
$UpdateQuery = "UPDATE eventcalendar SET Title='$_POST[title]', Detail='$_POST[detail]' WHERE ID='$_GET[ID]'"; 
mysql_query($UpdateQuery, $con); 
} 

$sql = "SELECT * FROM eventcalendar"; 
$myData = mysql_query($sql,$con); 

echo "<table border=1'> 
<tr> 
<th>Id</th> 
<th>Title</th> 
<th>Detail</th> 
<th>Event Date</th> 
<th>Date Added</th> 
</tr>"; 

while($row = mysql_fetch_array($myData)){ 
    echo "<form action=details.php method=post>"; 
    echo "<tr>"; 
    echo "<td>" . $row['ID'] . "</td>"; 
    echo "<td>" . "<input type=text name=title value=" . $row['Title'] . " </td>"; 
    echo "<td>" . "<input type=text name=detail value=" . $row['Detail'] . " </td>"; 
    echo "<td>" . $row['eventDate'] . "</td>"; 
    echo "<td>" . $row['dateAdded'] . "</td>"; 
    echo "<td>" . "<input type=submit name=update value=update" . " </td>"; 

    echo "</tr>"; 
    echo "</form>"; 
} 
echo "</table>"; 

mysql_close($con); 

這是我的代碼,但是當我嘗試執行它時,它會執行我的表中的所有行而不是我編輯的唯一行。我搜索了2小時,但仍無法找到它。你們有沒有人知道我可以如何解決這個問題?PHP窗體更新所有mysql行而不是1

+0

如果可以的話,你應該停止使用mysql_ *函數。他們被正式棄用。這些擴展在PHP 7中已被刪除。請改爲了解準備好的語句,並考慮使用PDO,這確實不難。 –

+0

可能是因爲你的'$ _GET [ID]'失敗了。 –

+0

如果您使用'$ _GET [ID]'作爲您的更新的標識符,則需要將其添加到表單的操作中。 – user2959229

回答

0

看起來您需要在表單操作中包含ID。

echo '<form action="details.php?ID='.$row['ID'].'" method="post">'; 

這將允許在你的更新查詢使用$_GET['ID']價值。

另外,添加ID作爲隱藏字段在您的形式像

echo '<input type="hidden" name="ID" value="'.$row['ID'].'">'; 

並更改SQL查詢中使用$_POST['ID']而不是$_GET['ID']

$UpdateQuery = "UPDATE eventcalendar SET Title='$_POST[title]', Detail='$_POST[detail]' WHERE ID='$_POST[ID]'"; 

你還需要研究的東西是逃避你正在使用的SQL語句的輸入。

+0

非常感謝你的工作! – Emre

0
SQL Injection issues

除此之外,你的問題是:

  1. 你在你的查詢中使用$_GET[ID],而不是$_POST[ID]
  2. 你沒有張貼ID回的形式在所有。嘗試添加此:
echo "<input type='hidden' name='ID' value='{$row[ID]}'>"; 
+0

我用user2959229的答案,它幫助!感謝您的投入! – Emre

0

$_POST[title]$_POST[detail]$_GET[ID]被解釋爲普通字符串,而不是作爲評估值,以獲得評估值,你必須使用級聯。

更新這一部分:

if (isset($_POST['update'])){ 
    $UpdateQuery = "UPDATE eventcalendar SET Title='$_POST[title]', Detail='$_POST[detail]' WHERE ID='$_GET[ID]'"; 
    mysql_query($UpdateQuery, $con); 
} 

這樣:

if (isset($_POST['update'])) 
{ 
    $UpdateQuery = "UPDATE eventcalendar SET Title='". $_POST['title']. "', Detail='". $_POST['detail']. "' WHERE ID='". $_POST['ID']. "'"; 
    mysql_query($UpdateQuery, $con); 
} 
+0

感謝您的輸入,User2959229的回答有幫助! – Emre

相關問題