2012-05-11 107 views
0

我试图让DELETE链接印在每个$row旁边。此外,在另一页上,有一个“下载”链接 - 他们应该以同样的方式工作。问题是这样的:我将DELETE和DOWNLOAD同时打印在每条记录旁边,但是使用我的代码,没有任何反应,或者我的脚本出错。出于某种原因,我有我的网站最复杂的功能运行,但这仍然逃避我。这里有一些代码:mysqli删除不起作用

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); 

我得到的错误是 “错误,查询失败”

+2

'$ dbc-> error'说什么?删除'@'也可能有帮助。 –

+0

或'mysqli_error',为了一致性 – Amadan

+0

好调用,那个错误不输出任何东西,它只是说“错误!查询失败:[空格]该行被借用代码,去图 – V1GG3N

回答

0

if(isset($_GET['upload_id']))变化if(isset($_GET['id']))

$id = intval($_GET['id']);

的HTML参数ID,而不是upload_id

+0

我只是这样做,并改为mysqli_error。现在没有错误,重定向到.php?id = ...记录仍然在数据库中 – V1GG3N

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是(可能)的自动递增的整数字段,这意味着它永远不会等于一个非数字的字符串常量。

+0

我解决了这个问题,我被重定向到了我的ahref,但没有列出id(profile.php?id =),并且记录仍然在数据库中,现在没有错误。仍然在救助我,没有任何错误 – V1GG3N

+0

@ V1GG3N,这是一个_different_问题,应该问这样的问题。原来的问题已经解决,你会得到更广泛的回应,如果你用更新的细节提出一个新问题,而不仅仅是留下评论 - 这也将更好地服务于SO Q&A本质。但是,我会用删除按钮在页面上执行“查看源代码”,以确保href被正确输出。 – paxdiablo

+0

指出,谢谢我会问一个新的问题。 fyi Delete是我的观点来源 – V1GG3N

0

尝试删除大括号,怎么一回事,因为当你打印出查询创建它显示的值用大括号括起来的id可能会导致不删除id。

这应该工作:“删除上传WHERE upload_id = $ id”;

防止页面引导到另一个页面使用preventdefault js函数。