在我們繼續討論這些好東西之前,讓我先指出原始錯誤的來源。由於$row = mysql_fetch_row($result);
創建了一個枚舉數組(如:array(0 =>'value1',1 =>'value2',...)),而不是關聯數組,所以$row["id"]
將不確定。這仍然會生成HTML,但所有的刪除按鈕都沒有指定id。
這條線:
$delete = "DELETE * from products where id = ". $id;
你不需要*
只是做:
$delete = "DELETE from products where id = ". $id;
(現在,好東西)---順便說一句,我使用了id
- product
- city
作爲列示例。
這是mysqli_*
版本。將xxx
替換爲您的數據庫憑證。
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
DEFINE ('DB_HOST', 'xxx');
DEFINE ('DB_USER', 'xxx');
DEFINE ('DB_PASSWORD', 'xxx');
DEFINE ('DB_NAME', 'xxx');
$db = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die("could not connect");
$results = mysqli_query($db,"select * from products");
print "<table border=1 cellspacing=\"0\" cellpadding=\"3\">\n";
echo "<tr>\n";
echo '<td width="25%">
<p align="center">ID</td>
<td width="25%">
<p align="center">PRODUCT</td>
<td width="25%">
<p align="center">CITY</td>
<td width="25%">
<p align="center">ACTION</td>
</tr>';
while ($row = mysqli_fetch_assoc($results)) {
print "<tr><td>" . $row['id'] . "</td>\n<td>" . $row['product'] . "</td>\n" . "<td>" . $row['city'] . "</td>\n" . "<td>\n" . "<a href='delete.php?id=".$row["id"] ."'>Delete</a>\n</td>\n</tr>\n";
}
print "</table>\n";
echo "<hr>"; // simply a seperator. You can delete this
mysqli_close($db);
?>
刪除代碼 - mysqli_*
(delete.php)
<?php
DEFINE ('DB_HOST', 'xxx');
DEFINE ('DB_USER', 'xxx');
DEFINE ('DB_PASSWORD', 'xxx');
DEFINE ('DB_NAME', 'xxx');
$db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die("could not connect");
$id = (int)$_GET["id"];
$delete = "DELETE from products where id = ". $id;
// You can also use
// $delete = "DELETE from products where id=$id";
if (mysqli_query($db,$delete))
{
echo "Database updated successfully";
}
else
{
echo "An error occurred: " . mysqli_error($db);
}
?>
mysql_*
功能取消通知:
http://www.php.net/manual/en/intro.mysql.php
此擴展從PHP 5.5.0開始不推薦使用,不建議用於編寫新代碼,因爲它將在未來刪除。相反,應使用mysqli或PDO_MySQL擴展名。請參閱MySQL API Overview以獲取進一步幫助,同時選擇MySQL API。
這些函數允許您訪問MySQL數據庫服務器。有關MySQL的更多信息,請參見»http://www.mysql.com/。
有關MySQL的文檔可以在»http://dev.mysql.com/doc/找到。
這裏是準備語句的一些教程,你可以學習和嘗試:
這裏有幾個教程上PDO:
嘗試,並把你刪除''Delete你'裏面的foreach($行爲$細胞)'循環。另外,如下所述,在刪除後刪除'*' –
您是否收到錯誤消息?究竟發生了什麼? –
如果這是一個在公共互聯網上的應用程序,我會更關注**巨大的[SQL注入漏洞](http://bobby-tables.com/),因爲你完全不顧一切[正確的轉義做法](http://bobby-tables.com/php)。請不要用'mysql_query'編寫新的代碼,因爲它很糟糕,並且在不久的將來會從PHP中刪除。 – tadman