我正在尝试在DELETE
旁边打印$row
个链接。此外,在另一个页面上,有一个“下载”链接 - 它们应该以相同的方式工作。问题是:我得到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页面上我有这个逻辑让我失望。该示例用于删除,但我的DOWNLOAD链接问题也是如此。
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);
我得到的错误是“错误,查询失败”
答案 0 :(得分:0)
在您的链接中,您似乎正在设置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(可能)是一个自动递增的整数字段,这意味着它永远不会等于非数字字符串文字。
答案 1 :(得分:0)
if(isset($_GET['upload_id']))
更改为if(isset($_GET['id']))
和$id = intval($_GET['id']);
HTML参数是id,而不是upload_id
答案 2 :(得分:0)
尝试删除大括号,当打印出创建的查询时,它会显示带花括号的id的值,这可能导致不删除id。
这应该有效:“DELETE FROM upload WHERE upload_id = $ id”;
防止页面指向另一个页面使用preventdefault js函数。