Php 从数据库中搜索并显示结果
我是php新手。我试图展示一些使用php的SQL数据库的结果 我有一个包含3个字段的搜索表单。当用户提交此表单时,若搜索值与数据库匹配,则会显示一些结果。若搜索值和数据库不匹配,它将显示一条错误消息Php 从数据库中搜索并显示结果,php,mysql,database,Php,Mysql,Database,我是php新手。我试图展示一些使用php的SQL数据库的结果 我有一个包含3个字段的搜索表单。当用户提交此表单时,若搜索值与数据库匹配,则会显示一些结果。若搜索值和数据库不匹配,它将显示一条错误消息 <form method="post"> <label>User ID</label> <input name="textinput" type="text" value=""> <label>Username</l
<form method="post">
<label>User ID</label>
<input name="textinput" type="text" value="">
<label>Username</label>
<input name="textinput" type="text" value="">
<label>Country</label>
<select name="selectbasic">
<option value="">Country 1</option>
<option value="">Country 2</option>
<option value="">Country 3</option>
</select>
<input type="submit" value="Submit">
</form>
结果将显示如下
User ID: 123
Username: XYZ
User Email: xyz
Full Name: xyz
Country: xyz
Division: xyz
User Bio: xyz
请给我一个解决这个问题的最佳方案
这是我的代码,但此代码仅在用户id匹配时显示结果,但我需要匹配3个字段
<?php
$output = NULL;
if(isset($_POST['submit'])){
$mysqli = NEW MySQLi("localhost","dbuser","password","dbname");
$search = $mysqli->real_escape_string($_POST['search']);
$resultsSet = $mysqli->query("SELECT * FROM data WHERE user_id = '$search'");
if($resultsSet->num_rows > 0) {
while($rows = $resultsSet->fetch_assoc())
{
$user_id = $rows['user_id'];
$user_name = $rows['user_name'];
$user_email = $rows ['user_email'];
$full_name = $rows ['full_name'];
$country = $rows ['country'];
$division = $rows ['division'];
$user_bio = $rows ['user_bio'];
$output = "
<td>$user_id</td>
<td>$user_name</td>
<td>$user_email</td>
<td>$full_name</td>
<td>$country</td>
<td>$division</td>
<td>$user_bio</td>";
}
}else{
$output = "No results";
}
}
?>
通过这句话,您可以从表中获取最后一个id
$sql=“根据id描述限制1从表中选择id_名称顺序”;
然后,您可以使用for循环检查用户输入的字段以及数据库中的所有字段。首先,您需要与数据库建立连接
以下是一个例子:
try {
$conn = new PDO("mysql:host=localhost;dbname = your_databasename","user","password");
}
catch (PDOException $e)
{
echo "Error: ". $e->getMessage() . "\n" ;
die();
}
然后,您需要将表单的结果添加到查询中
例如:
$db = $conn->prepare('SELECT * FROM table_name WHERE user_id=? AND user_name=? AND country=?');
$db->bindParam(1, $_REQUEST["id"], PDO::PARAM_INT, 30);
$db->bindParam(2, $_REQUEST["name"], PDO::PARAM_STR, 30);
$db->bindParam(3, $_REQUEST["country"], PDO::PARAM_STR, 30);
$db->execute();
$data = $db->fetch(PDO::FETCH_BOTH);
$\u请求之后的“[]”之间的名称是
最后,您需要编写代码以输出结果
比如:
echo "user id:".$data[user_id];
....
我解决了这个问题。这是我的密码
<?php
$output = NULL;
if(isset($_POST['submit'])){
//Connect to the database
$mysqli = NEW MySQLi("localhost","dbuser","password","dbname");
$search = $mysqli->real_escape_string($_POST['search']);
$username = $mysqli->real_escape_string($_POST['username']);
$country = $mysqli->real_escape_string($_POST['country']);
//Query the database
$resultsSet = $mysqli->query("SELECT * FROM data WHERE user_id = '$search' AND user_name = '$username' AND country = '$country'");
if($resultsSet->num_rows > 0) {
while($rows = $resultsSet->fetch_assoc())
{
$user_id = $rows['user_id'];
$user_name = $rows['user_name'];
$user_email = $rows ['user_email'];
$full_name = $rows ['full_name'];
$country = $rows ['country'];
$division = $rows ['division'];
$user_bio = $rows ['user_bio'];
$output = "
<td>$user_id</td>
<td>$user_name</td>
<td>$user_email</td>
<td>$full_name</td>
<td>$country</td>
<td>$division</td>
<td>$user_bio</td>";
}
}else{
$output = "No Results Found";
}
}
?>
你试过什么吗?至少你和数据库的连接是怎么写的?你要找的是一个非常简单的小问题,你想不需要重新加载页面就可以完成吗?是的,我在问这个问题之前试过了。但我只能搜索一个字段,$resultsSet=$mysqli->query(“SELECT*FROM data WHERE user_id='$search');但我不知道如何搜索3个字段。您只需要在用户\ id=$id的位置提取信息,其余信息将自动从sql调用的位置提取,然后您可以显示$row=$resultsSet->fetch\ U assoc()$第[“分部”]行;等等,您可以使用和
运算符选择更多字段。示例:SELECT*从数据中,其中user_id='$search'和user_name='$username'和country='$country'
您真的应该等待发布此消息;你看到他们编辑的帖子了吗?我添加了我的代码,主要的问题是你能看到吗?我想你需要从
<?php
$output = NULL;
if(isset($_POST['submit'])){
//Connect to the database
$mysqli = NEW MySQLi("localhost","dbuser","password","dbname");
$search = $mysqli->real_escape_string($_POST['search']);
$username = $mysqli->real_escape_string($_POST['username']);
$country = $mysqli->real_escape_string($_POST['country']);
//Query the database
$resultsSet = $mysqli->query("SELECT * FROM data WHERE user_id = '$search' AND user_name = '$username' AND country = '$country'");
if($resultsSet->num_rows > 0) {
while($rows = $resultsSet->fetch_assoc())
{
$user_id = $rows['user_id'];
$user_name = $rows['user_name'];
$user_email = $rows ['user_email'];
$full_name = $rows ['full_name'];
$country = $rows ['country'];
$division = $rows ['division'];
$user_bio = $rows ['user_bio'];
$output = "
<td>$user_id</td>
<td>$user_name</td>
<td>$user_email</td>
<td>$full_name</td>
<td>$country</td>
<td>$division</td>
<td>$user_bio</td>";
}
}else{
$output = "No Results Found";
}
}
?>
<form method="post">
<label>User ID</label>
<input name="search" type="text" value="">
<label>Username</label>
<input name="username" type="text" value="">
<label>Country</label>
<select name="country">
<option value="">Country 1</option>
<option value="">Country 2</option>
<option value="">Country 3</option>
</select>
<input type="submit" value="Submit">
</form>