php - php代码有问题,运行,但不会执行
问题描述
搜索程序正在影响程序的种类。如果我单独测试每一个,它们都可以工作。我很确定这与 mysqli_fetch_array($results) 有关,我只是找不到哪里出错了。任何帮助将不胜感激。
服务器:test 表:testcode id、FirstName、LastName
索引.php
<?php
include('new.php');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test Code</title>
<style>
table,tr,th,td
{
border: 1px solid black;
}
</style>
</head>
<body>
<div class="input-sbi">
<form action="index.php" method="post">
<input type="text" name="valueToSearch" placeholder="Value To Search">
<br><br>
<input type="submit" name="search" value="Search">
</div>
<form method="post" action="index.php" >
<div class="input-group">
<div id="content1">
<label>FirstName</label>
<input type="text" name="FirstName" value="<?php echo $FirstName; ?>">
<label>LastName</label>
<input type="text" name="LastName" value="<?php echo $LastName; ?>">
</select><br><br>
<input type="hidden" name="id" value="<?php echo $id; ?>" >
</div>
</div>
<table>
<thead>
<tr>
<th><a href="?orderby=id&order=<?php echo $idOrder; ?>">id</a></th>
<th><a href="?orderby=FirstName&order=<?php echo $FirstNameOrder; ?
>">FirstName</a></th>
<th><a href="?orderby=LastName&order=<?php echo $LastNameOrder; ?
>">LastName</a></th>
</tr>
</thead>
<?php while ($row = mysqli_fetch_array($results)): ?>
<tr>
<td><?php echo $row['id'];?></td>
<td><?php echo $row['FirstName']; ?></td>
<td><?php echo $row['LastName']; ?></td>
<td>
<a href="index.php?edit=<?php echo $row['id'];?
>"class="edit_btn">Edit</a>
</td>
<td>
<a href="index.php?del=<?php echo $row['id'];?
>"class="del_btn">Delete</a>
</td>
</tr>
<?php endwhile; ?>
</table>
</form>
</body>
</html>
<?php
session_start();
$db = mysqli_connect('localhost', 'root', '', 'test');
$FirstName = "";
$LastName = "";
$id = 0;
if (isset($_GET['edit'])) {
$id = $_GET['edit'];
$db=null;
$db = mysqli_connect('localhost', 'root', '', 'test') or die("Not
connected.");
$record = mysqli_query($db, "SELECT * FROM testcode WHERE id=$id");
if (@count($record) == 1 ) {
$n = mysqli_fetch_array($record);
$FirstName = $n['FirstName'];
$LastName = $n['LastName'];
}
}
// Ascending Decending Order
$db = new mysqli("localhost", "root", "", "test");
$orderBy = !empty($_GET["orderby"]) ? $_GET["orderby"] : "id";
$order = !empty($_GET["order"]) ? $_GET["order"] : "asc";
$sql = "SELECT * FROM testcode ORDER BY " . $orderBy . " " . $order;
$result = $db->query($sql);
$idOrder = "asc";
$FirstNameOrder = "asc";
$LastNameOrder = "asc";
if($orderBy == "id" && $order == "asc") {
$idOrder = "desc";
}
if($orderBy == "FirstName" && $order == "asc") {
$FirstNameOrder = "desc";
}
if($orderBy == "LastName" && $order == "asc") {
$LastNameOrder = "desc";
}
if(isset($_POST['search']))
{
$valueToSearch = $_POST['valueToSearch'];
$query = "SELECT * FROM `testcode` WHERE CONCAT(`id`, `FirstName`,
`LastName`) LIKE '%".$valueToSearch."%'";
$results = filterTable($query);
}
else {
$query = "SELECT * FROM `testcode`";
$results = filterTable($query);
}
function filterTable($query)
{
$connect = mysqli_connect("localhost", "root", "", "test");
$filter_Result = mysqli_query($connect, $query);
return $filter_Result;
}
?>
解决方案
您需要按如下所述更改 PHP 代码。另外,您遗漏了一些标签并添加了未使用的标签,我添加了注释以供您理解:
<?php
session_start();
include('new.php');
$db = mysqli_connect('localhost', 'root', '', 'test');
$FirstName = "";
$LastName = "";
$id = 0;
if (isset($_GET['edit'])) {
$id = $_GET['edit'];
// --- Unnecessary db connection start ---
// $db=null;
// $db = mysqli_connect('localhost', 'root', '', 'test') or die("Not connected.");
// --- Unnecessary db connection start ---
$record = mysqli_query($db, "SELECT * FROM testcode WHERE id=$id");
if (@count($record) == 1 ) {
$n = mysqli_fetch_array($record);
$FirstName = $n['FirstName'];
$LastName = $n['LastName'];
}
}
// Ascending Decending Order
// --- Unnecessary db connection start ---
// $db = new mysqli("localhost", "root", "", "test");
// --- Unnecessary db connection end ---
$orderBy = !empty($_GET["orderby"]) ? $_GET["orderby"] : "id";
$order = !empty($_GET["order"]) ? $_GET["order"] : "asc";
// --- Unnecessary query start ---
// $sql = "SELECT * FROM testcode ORDER BY " . $orderBy . " " . $order;
// $result = $db->query($sql);
// --- Unnecessary query end ---
$idOrder = "asc";
$FirstNameOrder = "asc";
$LastNameOrder = "asc";
if($orderBy == "id" && $order == "asc") {
$idOrder = "desc";
}
if($orderBy == "FirstName" && $order == "asc") {
$FirstNameOrder = "desc";
}
if($orderBy == "LastName" && $order == "asc") {
$LastNameOrder = "desc";
}
if(isset($_POST['search'])) {
$valueToSearch = $_POST['valueToSearch'];
// Add order by clause at the end of query to apply both Search and Order By functionality
$query = "SELECT * FROM `testcode` WHERE CONCAT(`id`, `FirstName`, `LastName`) LIKE '%".$valueToSearch."%' ORDER BY " . $orderBy . " " . $order;
// Pass new paramter called $connect, for not initializing db connection again
$results = filterTable($query, $db);
}
else {
// Add order by clause at the end of query to apply only Order By functionality
$query = "SELECT * FROM `testcode` ORDER BY " . $orderBy . " " . $order;
// Pass new paramter called $connect, for not initializing db connection again
$results = filterTable($query, $db);
}
// Add new paramter called $connect, for not initializing db connection again
function filterTable($query, $connect) {
// --- Unnecessary query start ---
// $connect = mysqli_connect("localhost", "root", "", "test");
// --- Unnecessary query start ---
$filter_Result = mysqli_query($connect, $query);
return $filter_Result;
}
?>
进行上述更改,然后尝试。希望对你有帮助!
推荐阅读
- c# - 无法访问已处置的对象。但我刚刚创建了对象,并试图在下一行代码中将其保存到数据库中
- python-3.x - from_altaz()和observe(sun).apparent().ecliptic_latlon()的不同黄道值
- javascript - 在c#中的imagebutton onclientclick中将变量传递给javascript
- swiftui - 如何在 SwiftUI 视图的属性中定义拖动手势
- php - 如何使用 PHP Soap 类客户端进行 SoapCall
- amazon-web-services - 如何在不丢失对象公共权限的情况下迁移存储桶?
- typescript - 类型中缺少 Object.entries 属性“长度”
- docker - 无法连接到 dotnetcore api 的 docker 容器端口
- sql - 如何通过另一个表从一列中分离出多个值?
- java - 有没有办法从终端启动本地 Java IBM Liberty Server?