Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未在PHP网页中显示MySQL数据_Php_Mysql - Fatal编程技术网

未在PHP网页中显示MySQL数据

未在PHP网页中显示MySQL数据,php,mysql,Php,Mysql,我试图从MySQL中获取一些数据以显示在PHP网页上,但没有显示任何数据 我将变量searchterm和searchtype在HTML代码中声明得更高。HTML代码只有一个下拉菜单选项和一个供用户搜索的选项 但是,当我运行代码时,不会显示任何数据。我得到的只是:“找到的项目数”,这就是数据要显示的地方 我所拥有的完整HTML和PHP代码如下所示 <html> <body> <h1>Search</h1> &l

我试图从MySQL中获取一些数据以显示在PHP网页上,但没有显示任何数据

我将变量
searchterm
searchtype
在HTML代码中声明得更高。HTML代码只有一个下拉菜单选项和一个供用户搜索的选项

但是,当我运行代码时,不会显示任何数据。我得到的只是:“找到的项目数”,这就是数据要显示的地方

我所拥有的完整HTML和PHP代码如下所示

<html>
    <body>
        <h1>Search</h1>
        <form action="list_projects.php" method="POST">
            <p>Choose Search Type: <br /></p>
            <select name="searchtype">
                <option value="projectNo">Project Number</option>
                <option value="pjname">Project Name</option>
                <option value="city">Project City</option>
            </select>
            <br />
            <p>Enter Search Term: </p>
            <input name="searchterm" type="text" size="20"/>
            <br />
            <input type="submit" name="submit" value="Search"/>
        </form>

        <?php
            $hostname='mysql.uniwebsite.ac.uk';
            $database='somedatabase';
            $username='uniusername';
            $password='unipassword';

            $link = mysqli_connect($hostname, $username, $password);
            if (!$link) {
                die('Connection failed: ' . mysqli_error());
            }

            $searchtype=$_POST['searchtype'];
            $searchterm=trim($_POST['searchterm']);
            if (!$searchtype || !$searchterm) {
                echo 'No search details. Go back and try again.';
                exit;
            }

            $query = "select * FROM tables WHERE ".$searchtype." like '%".$searchterm."%'";
            $result = mysqli_query($link, $query);
            $num_results = mysqli_num_rows($result);

            echo "<p>Number of projects found: ".$num_results."</p>";
            for ($i=0; $i <$num_results; $i++) {
                $row = mysqli_fetch_assoc($result);
                echo "<p><strong>".($i+1).". Project Number: ";
                echo htmlspecialchars(stripslashes($row['projectNo']));
                echo "</strong><br />Project Name: ";
                echo stripslashes($row['pjname']);
                echo "<br />Project City: ";
                echo stripslashes($row['city']);
                echo "</p>";
            }
            $mysqli_free_result($result);
            $mysqli_close($link);

        ?>
    </body>
</html>

一些改进的代码可以帮助您前进,请参见
更改:
作业:
行:

<html>
    <body>
        <h1>Search</h1>
        <form action="list_projects.php" method="POST">
            <p>Choose Search Type: <br /></p>
            <select name="searchtype">
                <option value="projectNo">Project Number</option>
                <option value="pjname">Project Name</option>
                <option value="city">Project City</option>
            </select>
            <br />
            <p>Enter Search Term: </p>
            <input name="searchterm" type="text" size="20"/>
            <br />
            <input type="submit" name="submit" value="Search"/>
        </form>

        <?php
            // Change 1: Enable error reporting
            error_reporting(E_ALL);
            ini_set('display_errors', 1);

            $hostname='mysql.uniwebsite.ac.uk';
            $database='somedatabase';
            $username='uniusername';
            $password='unipassword';

            // Change 2: Add $database
            $link = mysqli_connect($hostname, $username, $password, $database);

            // Change 3: Literally copy&paste error checking from mysqli_query docs page
            /* check connection */
            if (mysqli_connect_errno()) {
                printf("Connect failed: %s\n", mysqli_connect_error());
                exit();
            }

            // Homework: Check for legal values in more detail
            $searchtype=$_POST['searchtype'];
            $searchterm=trim($_POST['searchterm']);
            if (!$searchtype || !$searchterm) {
                echo 'No search details. Go back and try again.';
                exit;
            }

            // Homework: Use prepared statements to avoid sql injection
            $query = "select * FROM tables WHERE ".$searchtype." like '%".$searchterm."%'";

            // Change 4: Error checking
            if ($result = mysqli_query($link, $query))
            {
                $num_results = mysqli_num_rows($result);

                echo "<p>Number of projects found: ".$num_results."</p>";
                for ($i=0; $i <$num_results; $i++) {
                    $row = mysqli_fetch_assoc($result);
                    echo "<p><strong>".($i+1).". Project Number: ";
                    echo htmlspecialchars(stripslashes($row['projectNo']));
                    echo "</strong><br />Project Name: ";
                    echo stripslashes($row['pjname']);
                    echo "<br />Project City: ";
                    echo stripslashes($row['city']);
                    echo "</p>";
                }

                // Change 5.1: Remove $
                mysqli_free_result($result);
            } else {
                printf("Error: %s\n", mysqli_error($link));
            }

            // Change 5.2: Remove $
            mysqli_close($link);
        ?>
    </body>
</html>

搜寻
选择搜索类型:

项目编号 项目名称 项目城市
输入搜索词:



一方面,您正在混合使用MySQL API,这是目前为止破坏您的代码的原因。您是否有POST数组的值还不清楚。@Fred ii-我没有看到MySQL API的混合,它已在代码中修复。您的原始帖子以不同的方式表示-
$link=MySQL\u connect($hostname,$username,$password);如果(!$link){die('Connection failed:'.mysql_error());
那么现在的问题是:这些POST数组是从哪里获取的?无法知道您的(未知)是否HTML表单有所有正确的部分。您也没有在任何地方检查错误。@Fred ii-这就是为什么我编辑了它,以便它与我在本地计算机上的内容相关。
<html>
    <body>
        <h1>Search</h1>
        <form action="list_projects.php" method="POST">
            <p>Choose Search Type: <br /></p>
            <select name="searchtype">
                <option value="projectNo">Project Number</option>
                <option value="pjname">Project Name</option>
                <option value="city">Project City</option>
            </select>
            <br />
            <p>Enter Search Term: </p>
            <input name="searchterm" type="text" size="20"/>
            <br />
            <input type="submit" name="submit" value="Search"/>
        </form>

        <?php
            // Change 1: Enable error reporting
            error_reporting(E_ALL);
            ini_set('display_errors', 1);

            $hostname='mysql.uniwebsite.ac.uk';
            $database='somedatabase';
            $username='uniusername';
            $password='unipassword';

            // Change 2: Add $database
            $link = mysqli_connect($hostname, $username, $password, $database);

            // Change 3: Literally copy&paste error checking from mysqli_query docs page
            /* check connection */
            if (mysqli_connect_errno()) {
                printf("Connect failed: %s\n", mysqli_connect_error());
                exit();
            }

            // Homework: Check for legal values in more detail
            $searchtype=$_POST['searchtype'];
            $searchterm=trim($_POST['searchterm']);
            if (!$searchtype || !$searchterm) {
                echo 'No search details. Go back and try again.';
                exit;
            }

            // Homework: Use prepared statements to avoid sql injection
            $query = "select * FROM tables WHERE ".$searchtype." like '%".$searchterm."%'";

            // Change 4: Error checking
            if ($result = mysqli_query($link, $query))
            {
                $num_results = mysqli_num_rows($result);

                echo "<p>Number of projects found: ".$num_results."</p>";
                for ($i=0; $i <$num_results; $i++) {
                    $row = mysqli_fetch_assoc($result);
                    echo "<p><strong>".($i+1).". Project Number: ";
                    echo htmlspecialchars(stripslashes($row['projectNo']));
                    echo "</strong><br />Project Name: ";
                    echo stripslashes($row['pjname']);
                    echo "<br />Project City: ";
                    echo stripslashes($row['city']);
                    echo "</p>";
                }

                // Change 5.1: Remove $
                mysqli_free_result($result);
            } else {
                printf("Error: %s\n", mysqli_error($link));
            }

            // Change 5.2: Remove $
            mysqli_close($link);
        ?>
    </body>
</html>