我的搜索结果没有使用php代码显示

我的搜索结果没有使用php代码显示,php,mysqli,Php,Mysqli,在搜索中输入statusid时,我试图显示状态描述,但除了Array[0]=>产品正在运输之外,它没有显示任何内容 我得到了3个错误 注意:未定义变量:在中搜索 C:\wamp64\www\groupproject\checkorderstatus.php第20行注意: 未定义变量:在中搜索 C:\wamp64\www\groupproject\checkorderstatus.php第28行注意: 未定义的偏移量:C:\wamp64\www\groupproject\checkordersta

在搜索中输入statusid时,我试图显示状态描述,但除了Array[0]=>产品正在运输之外,它没有显示任何内容

我得到了3个错误

注意:未定义变量:在中搜索 C:\wamp64\www\groupproject\checkorderstatus.php第20行注意: 未定义变量:在中搜索 C:\wamp64\www\groupproject\checkorderstatus.php第28行注意: 未定义的偏移量:C:\wamp64\www\groupproject\checkorderstatus.php中的1 第36行


我看到一些问题

您的ifisset$_POST['submit'];线路没什么用。。。没有包裹任何东西的积木

您正在尝试将$search PHP变量插入SQL。 就像“%$search%”-顺便说一句,它位于两个位置

您需要首先设置PHP变量$search。 $search=$_PHP['search']

此外,除非您通过name='search'为输入搜索命名,否则这将不起作用。

Problems 您的代码目前存在许多问题

发布到PHP的表单使用$\u POST superglobal中的name属性 因此,您在提交表单时实际上没有提交任何内容 添加名称=。。。属性来修复此问题 您的if语句大体上是冗余的 不仅仅是因为你没有按照第1点发布任何东西 您应该为用户生成的输入使用准备好的语句,以保护数据库免受攻击和/或损坏 您的代码通常令人困惑,而且布局不太好 我不确定你的方括号、ifs和函数调用的一半应该在做什么 您收到的通知是因为您从未在PHP中设置$search 解决方案 注意

这假设所有代码都在一个文件[`checkorderstatus.php]中,并且它提交给自己。 补充说明:

我不确定像“%”这样的解决方案是否是最好的。看起来你在找一个id,大概是一个数字吧?在这种情况下,我会简单地使用:

<html>
<body>

<form action="checkorderstatus.php" method="post">
<input id="search" type="text" placeholder="Type here">
<input id="submit" type="submit" value="Search">
</form>
</body>
</html>

<?php

require_once 'loginorder.php';

$conn = new mysqli($hn, $un, $pw, $db);
if ($conn->connect_error) {
    die($conn->connect_error);
}

if (isset($_POST['submit']));

$query = "SELECT statusdescription FROM deliverystatus WHERE deliverystatus.statusid LIKE '%$search%'";
$result = $conn->query($query); //run the query and get the result
if (!$result) {
    die($conn->error);
}

$rows = $result->num_rows;

$query = "SELECT statusdescription FROM deliverystatus WHERE deliverystatus.statusid LIKE '%$search%'";
 
 $result = mysqli_query($conn, $query);

($row = mysqli_fetch_row($result)); {
    
    echo $row['1'];

print_r($row);
}

?>
下面的代码遵循这个前提。但是,如果确实需要LIKE,则应更新查询,如下所示:

WHERE deliverystatus.statusid = SEARCH_ID
并更新代码中的搜索词:

WHERE  deliverystatus.statusid LIKE ?
更新的HTML表单 使用PDO
这回答了你的问题吗?没有一个输入元素具有name属性。也许想读一读,是的,因为再也不会有新的贡献了。。。也许这就是他们想要的。事实上,你真的应该只能向上投票。我们生活在一个多么悲伤的世界。。。
$search = "%".$_POST["search"]."%";
<form action="checkorderstatus.php" method="post">
    <input id="search" name="search" type="text" placeholder="Type here">
    <input id="submit" name="submit" type="submit" value="Search">
</form>
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
$mysqli = new mysqli ($hn, $un, $pw, $db);

if(isset($_POST["submit"])){
    $search = $_POST["search"];               // Prepare the search term

    $sql   = "SELECT statusdescription FROM deliverystatus WHERE deliverystatus.statusid = ?";
    $query = $mysqli->prepare($sql);          // Prepare the statement
    $query->bind_param("i", $search);         // Bind search valus as an integer (use "s" if it's a string)
    $query->execute();                        // Execute the query
    $query->store_result();                   // Store the result
    $query->bind_result($status_description); // Bind "statusdescription" to a varaible

    while($query->fetch()){                   // Loop through result set
        echo $status_description}."<br>";     // Echo each match to a newline
    }
}
$pdo = new pdo(
    "mysql:host={$hn};dbname={$db}", $un, $pw,
    [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_EMULATE_PREPARES => FALSE
    ]
);

if(isset($_POST["submit"])){
    $search = $_POST["search"];                   // Prepare the search term

    $sql   = "SELECT statusdescription FROM deliverystatus WHERE deliverystatus.statusid = ?";
    $query = $pdo->prepare($sql);                 // Prepare the statement
    $query->execute([$search]);                   // Execute the query binding search as the parameter

    while($result = $query->fetchObject()){       // Loop through result set
        echo $result->statusddescription."<br>";  // Echo each match to a newline
    }
}