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