我正在尝试在每个$row
旁边打印一个DELETE
链接。此外,在另一个页面上,有一个"下载"链接 - 它们应该以相同的方式工作。 问题是这样的:我让 DELETE 和 DOWNLOAD 与每条记录一起打印出来,但使用我拥有的代码,什么也没发生,或者我的脚本因错误而幸灾。 出于某种原因,我启动并运行了我网站最复杂的功能,但这仍然让我无法理解。下面是一些代码:
while ($row = mysqli_fetch_array($r,MYSQLI_ASSOC))
{
echo '<tr><td align="left">' .
$row['title'] . '</td><td align="left">'
. $row['genre'] . '</td><td align="left">'
. $row['length'] . '</td><td align="left">'
. $row['created'] . '</td><td align="left">'
. $row['views'] . '</td><td align="left">'
. "<a href='wprofile.php?id={$row['upload_id']}'>Delete</a></td> . '</td></tr>';
}
在同一个php页面上,我有这个逻辑让我失望。 该示例用于删除,但对于我的下载链接问题,同样的失败。
if(isset($_GET['upload_id']))
{
$id = intval($_GET['upload_id']);
require_once (dbconnectionpath);
$delquery = "DELETE FROM 'upload' WHERE 'upload_id' = {$id}";
$done = @mysqli_query ($dbc, $delquery); //run the query
if($done) {
if (mysqli_num_rows($done)==1) {
echo 'Record deleted';
}
else{
echo 'Delete failed';
}
@mysqli_free_result($result);
}
else{
echo "Error! Query failed: <pre>{$dbc->error}</pre>";
}
mysqli_close(dbconnection);
我收到的错误是"错误,查询失败">
if(isset($_GET['upload_id']))
更改为if(isset($_GET['id']))
和$id = intval($_GET['id']);
HTML 参数是 id,而不是 upload_id
在您的链接中,您似乎正在设置id
:
<a href='wprofile.php?id={$row['upload_id']} ...
但是您的代码引用$_GET['upload_id']
.换句话说,您在代码中引用了错误的名称。在代码中使用id
,或在链接中使用upload_id
。
另一件事,这可能只是因为我看不到所有的 HTML - 你似乎在代码中有很多</td>
元素。检查链接行末尾的那个,但如前所述,这可能会关闭未显示的早期<td>
。
如果,如您在评论中提到的,您的"查看源代码"将链接显示为:
<a href='newwriter_profile.php?id='>Delete</a></td>
那么你创建那个HTML链接有问题。
那里有很多事情可能会出错,首先想到的几个是您的原始查询中没有update_id
,或者您正在查看的行的 ID 确实为空。
在生成 HTML 链接行之前检查 $row['update_id']
的值,这至少应该确认或否认该假设。除此之外,您必须找出为什么您的链接不正确。
我刚刚注意到的一件事,你可能想研究一下,是你对引号的使用:
$delquery = "DELETE FROM 'upload' WHERE 'upload_id' = {$id}";
现在我知道 MySQL 有时使用反引号来保护表和列名称免受不正确的解析(例如使用 select `column with spaces` from tbl1 ...
(,但您的代码似乎有单引号而不是反引号。
这只是另一件事要检查。查询中的 where
子句可能是将文本字符串"upload_id"与变量进行比较,而不是比较upload_id
列。
这可以解释为什么您的delete
没有命中任何行,因为您的 ID (可能(是一个自动递增的整数字段,这意味着它永远不会等于非数字字符串文字。
尝试删除大括号,因为当您打印出创建的查询时,它会显示带有大括号的 id 值,这可能会导致不删除 id。
这应该有效:"从上传中删除,其中upload_id = $id";
要防止页面定向到另一个页面,请使用 Preventdefault JS 函数。