You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP页面同时实现MySQL数据加载与删除功能报错求助

语法错误分析与修复

你遇到的syntax error, unexpected 'delete' (T_STRING)是因为echo语句中嵌套的双引号没有正确转义。外层的echo字符串用双引号包裹,而你在<a>标签的href属性里又用了双引号,这会让PHP误以为字符串在这里提前结束,后面的delete就变成了无意义的语法片段,从而抛出错误。

两种快速修复方式

方法1:转义href属性内的双引号

在href的双引号前添加反斜杠\,告诉PHP这是字符串的一部分,不是结束符号:

echo "<h1> " . $row["rTitle"]. " </h1>" . $row["rText"]. "<br> <a href=\"delete.php?id={$row['id']}\">Delete</a>";

方法2:改用单引号包裹href属性值

HTML允许用单引号包裹属性值,这样就不会和外层的双引号冲突:

echo "<h1> " . $row["rTitle"]. " </h1>" . $row["rText"]. "<br> <a href='delete.php?id={$row['id']}'>Delete</a>";

额外的潜在问题修复

除了语法错误,你的代码还有几个需要注意的问题,避免后续踩坑:

  1. 混用数据库扩展:你同时用了mysqli($conn->query())和已废弃的mysql_query(),后者不再被PHP支持,统一用mysqli即可。
  2. 参数不匹配:链接里传的是id参数,但删除逻辑里取的是$_GET['rID'],参数名不一致,永远无法正确触发删除。
  3. SQL注入风险:直接把$_GET参数拼到SQL语句里非常危险,建议用转义或预处理语句。
  4. 逻辑混乱:删除逻辑和展示逻辑混在一起,页面每次加载都会尝试执行删除,应该把删除逻辑单独放到delete.php,或者先判断是否有删除请求再执行。

整理后的完整修正代码:

<?php 
include 'conn.php'; 

// 查询并展示评论
$sql = "SELECT * FROM Reviews LIMIT 3"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
        echo "<h1>{$row['rTitle']}</h1>{$row['rText']}<br><a href='delete.php?id={$row['id']}'>Delete</a><hr>"; 
    } 
} else { 
    echo "0 results"; 
} 

// 建议把这段删除逻辑单独放到delete.php,这里仅做示例
if(isset($_GET['id'])) { 
    // 先转义参数避免注入,更安全的方式是用预处理语句
    $id = $conn->real_escape_string($_GET['id']); 
    $deleteSql = "DELETE FROM Reviews WHERE id = {$id}";
    
    if($conn->query($deleteSql)) {
        echo "<p>记录已成功删除</p>";
    } else {
        echo "<p>删除失败:" . $conn->error . "</p>";
    }
}

$conn->close(); 
?>

内容的提问来源于stack exchange,提问作者user10208257

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:59:12