php - SQLSTATE [HY093]:参数号无效:未定义参数 - php
问题描述
我在创建网站时遇到问题,我可以成功地将数据添加到每个正常工作的学生,但是我正在尝试创建一个页面,我基本上可以在其中搜索城市(我的 php 文档中的 város)他们住在里面,它列出了我所有的学生数据。我可以成功插入“város”,但是当我尝试读取数据时,它不起作用。
我得到的错误信息是:
SELECT * FROM Diák WHERE 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"; ?>
解决方案
显然 PDO 不理解包含重音字符的命名参数(我猜是 7 位 ASCII 之外的任何内容)。所以:város
改为:varos
.
推荐阅读
- node.js - $ npm install npm WARN saveError ENOENT: 没有这样的文件或目录,打开 'C:\LeadMgt_Use.This.One\package.json'
- python - 如何通过提供 x,y 坐标使用 selnium(或任何其他 webdriver)在网站上移动鼠标
- vba - SQL 语句在执行时返回“找不到文件”
- typescript - 如何将 monorepo 节点项目捆绑到单个文件中?尝试使用 ncc
- rust - 如何在rust中返回带有引用的结构?
- c# - 使用相同的变量名或空检查切换对象类型失败?
- javascript - 这种合并排序的迭代实现是否正确?
- angular - “可观察”类型上不存在属性“地图”
' - java - 如果缺少 jar,使用“jpackage”创建的可执行文件会静默失败
- c# - 我的 Xaml cs 文件找不到我的 xaml 文本框 UWP