php - 如何将此 SQL 转换为准备好的语句?
问题描述
我需要帮助将此 SQL 转换为 Prepared Statement。这是我的搜索栏。我希望我能得到一些帮助,因为我是这方面的初学者。
这是我的 SQL
$conn = mysqli_connect('localhost','root','','my_db');
$mysql = "SELECT * FROM catetable";
$bike_list = mysqli_query($conn,$mysql);
$catesql = "SELECT catename FROM catetable";
$cate_list = mysqli_query($conn,$catesql);
这就是我想更改为 Prepared Statement
if (isset($_GET['search']))
{
$search = $_GET['search'];
$searchlist = array();
$lowersearchlist = array();
$i = 0;
while ($one_cate = mysqli_fetch_assoc($cate_list))
{
$searchlist[$i] = $one_cate['catename'];
$lowersearchlist[$i] = strtolower($one_cate['catename']);
$i++;
}
if (in_array($search,$searchlist) || in_array($search,$lowersearchlist))
{
header("Location:feature.php");
}
else
{
header("Location:index.php?error=true");
}
}
解决方案
编写一个与WHERE
子句中的参数匹配的查询。MySQL 通常默认为不区分大小写的比较,因此您不需要获取所有行来精确比较它们并且不区分大小写。
if (isset($_GET['search'])) {
$stmt = $conn->prepare("SELECT COUNT(*) AS c FROM yourTable WHERE catename = ?");
$stmt->bind_param("s", $_GET['search']);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();
if ($row['c'] > 0) {
header("Location: feature.php");
} else {
header("Location: index.php?error=true";
}
}
推荐阅读
- javascript - 有没有办法让工具提示通过 innerHTML 工作?
- asp.net-core - 在 .NET Core 5 中使用 WCF (WSDL)
- javascript - 如何确保仅在构建对象后才调用函数?
- excel - 如何将单元格的 .Find 函数返回值更改为文本值?
- python - 我在 VS 代码中运行代码时遇到问题
- c# - Blazor 数据库连接到远程 mysql 服务器
- macos - Python 任务在更新后关闭 VSCode 时启动
- scrum - 哪个是最受认可的 Scrum Master 认证?
- matlab - 使用matlab计算并绘制一组弹性数据
- css - 尺寸正确显示在 html 屏幕上。但在 React 中,大小不合适