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

PHP数据库查询报错:Undefined variable: word的原因是什么?

分析 "Undefined variable: word" 错误的原因

咱们先拆解这个错误的核心,再顺便揪出代码里其他潜在的问题:

1. 变量未初始化的直接原因

你把$word = $_POST['word'];放在了if(isset($_POST['submit']))的条件块里——这就意味着:

  • 当页面第一次加载(还没点击提交按钮)时,$_POST['submit']不存在,这个条件不成立,$word根本没被定义。
  • 之后代码执行到第7行的$sql = "SELECT FROM word WHERE word = $word";时,PHP找不到$word这个变量,自然抛出"Undefined variable"的警告。

2. 代码里的其他致命问题

除了这个变量错误,你的代码还有两个关键问题必须修复:

  • SQL语法错误:SELECT关键字后面必须指定要查询的字段(比如SELECT *或者具体字段名SELECT word, definition),直接写SELECT FROM是无效的。
  • SQL注入风险 + 字符串未转义:$word是用户输入的字符串,直接拼到SQL语句里会触发语法错误(字符串没加引号),还会导致严重的SQL注入漏洞。正确的做法是用预处理语句,或者至少用mysqli_real_escape_string()转义后再拼接。

修复后的参考代码示例

给你改个基本可用的版本,你可以参考:

<?php
// 先引入配置文件,放在开头更合理
include '../include/config.php';

// 初始化变量,避免未定义警告
$word = '';
$message = '';

if(isset($_POST['submit'])) {
    // 转义用户输入,防止SQL注入和语法错误
    $word = mysqli_real_escape_string($connect, $_POST['word']);
    // 修正SELECT语句,指定字段,给字符串加引号
    $sql = "SELECT * FROM word WHERE word = '$word'";
    $fetch = mysqli_query($connect, $sql);
    
    if($fetch && mysqli_num_rows($fetch) > 0) {
        $message = "找到匹配的单词: " . $word;
    } else {
        $message = "数据库中不存在该单词";
    }
}
?>

<form name="word-Add" method="POST" action="">
    <input type="text" name="word" placeholder="Type the Word" value="<?php echo htmlspecialchars($word); ?>"><br><br>
    <input type="submit" name="submit" id="submit" value="Search Word"><br><br>
    <?php if($message): ?>
        <p><?php echo $message; ?></p>
    <?php endif; ?>
</form>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:11:05