SQLSTATE[HY093]:参数编号无效:未定义参数-php

SQLSTATE[HY093]:参数编号无效:未定义参数-php,php,mysql,database,pdo,xampp,Php,Mysql,Database,Pdo,Xampp,我有一个问题,我制作了一个网站,我可以成功地向每个学生添加数据,效果很好,但是我尝试制作一个页面,在那里我可以基本上搜索他们居住的城市(我的php文档中的város),它列出了所有这些学生的数据。我可以成功地插入到“város”中,但是当我尝试读取数据时,它不起作用 我收到的错误消息是: 选择*FROM Diák,其中város=:város SQLSTATE[HY093]:参数编号无效:未定义参数 我的代码是: <?php require "../config.php&quo

我有一个问题,我制作了一个网站,我可以成功地向每个学生添加数据,效果很好,但是我尝试制作一个页面,在那里我可以基本上搜索他们居住的城市(我的php文档中的város),它列出了所有这些学生的数据。我可以成功地插入到“város”中,但是当我尝试读取数据时,它不起作用

我收到的错误消息是:

选择*FROM Diák,其中város=:város

SQLSTATE[HY093]:参数编号无效:未定义参数

我的代码是:

<?php

require "../config.php";
require "../common.php";

if (isset($_POST['submit'])) {
  if (!hash_equals($_SESSION['csrf'], $_POST['csrf'])) die();

  try  {
    $connection = new PDO($dsn, $username, $password, $options);

    $sql = "SELECT * 
            FROM Diák
            WHERE város = :város";

    $város = $_POST['város'];
    $statement = $connection->prepare($sql);
    $statement->bindParam(':város', $város, PDO::PARAM_STR);
    $statement->execute();

    $result = $statement->fetchAll();
  } catch(PDOException $error) {
      echo $sql . "<br>" . $error->getMessage();
  }
}
?>
<?php require "../../../htdocs/test/public/templates/header.php";?>
        
<?php  
if (isset($_POST['submit'])) {
  if ($result && $statement->rowCount() > 0) { ?>
    <h2>Találatok</h2>

    <table>
      <thead>
        <tr>
          <th>Oktatási_id</th>
          <th>Vezeték név</th>
          <th>Keresztnév</th>
          <th>Évfolyam</th>
          <th>Születési dátum</th>
          <th>Város</th>
          <th>Utca</th>
          <th>Házszám</th>
          <th>Irányítószám</th>
          <th>Szak</th>
          <th>Kar</th>
        </tr>
      </thead>
      <tbody>
      <?php foreach ($result as $row) : ?>
        <tr>
          <td><?php echo escape($row["oktatási_id"]); ?></td>
          <td><?php echo escape($row["vezeték_név"]); ?></td>
          <td><?php echo escape($row["kereszt_név"]); ?></td>
          <td><?php echo escape($row["évfolyam"]); ?></td>
          <td><?php echo escape($row["születési_dátum"]); ?></td>
          <td><?php echo escape($row["város"]); ?></td>
          <td><?php echo escape($row["utca"]); ?> </td>
          <td><?php echo escape($row["házszám"]); ?> </td>
          <td><?php echo escape($row["irányítószám"]); ?> </td>
          <td><?php echo escape($row["szak"]); ?> </td>
          <td><?php echo escape($row["kar"]); ?> </td>
        </tr>
      <?php endforeach; ?>
      </tbody>
    </table>
    <?php } else { ?>
      <blockquote>Nem találtunk diákot, aki ilyen Városban lakna. <?php echo escape($_POST['város']); ?>.</blockquote>
    <?php } 
} ?> 

<h2>Városon alapuló keresés.</h2>

<form method="post">
  <input name="csrf" type="hidden" value="<?php echo escape($_SESSION['csrf']); ?>">
  <label for="város">Város</label>
  <input type="text" id="város" name="város">
  <input type="submit" name="submit" value="View Results">
</form>

<a href="public/index.php">Vissza a fő oldalra.</a>

<?php require "../../../htdocs/test/public/templates/footer.php"; ?>

塔拉托克
奥卡塔西德
维泽特克涅夫
克列斯涅夫
埃夫福利亚姆
苏莱西·达图姆
瓦罗斯
Utca
哈扎姆
伊兰尼·托斯卡姆
绍克
卡尔
纳姆·塔勒图克·迪科特(Nem találtunk diákot),阿基·伊莱恩·瓦罗斯班·拉克纳(aki ilyen Városban lakna.)。
瓦罗森·阿拉普洛凯雷斯。

显然,PDO不理解包含重音字符的命名参数(我猜是7位ASCII以外的任何字符)。因此,将
:város
更改为
:varos