Php 搜索表单选择结果
我有两个表,一个称为users,带有user\u id、user\u name、school\u id和subcat\u id,另一个称为school\u id、school\u name和school\u decile。我用select语句制作了一个搜索表单,它根据用户在搜索表单上选择的子类别id和/或学校id从第一个表中收集结果。现在,我想用用户名、学校名称和学校小数来显示结果。但正如在select语句中一样,我只从第一个表中进行选择,而不是从第二个表中进行选择。如果select语句中没有学校名称和学校名称,如何显示用户的结果Php 搜索表单选择结果,php,mysql,sql,search-form,Php,Mysql,Sql,Search Form,我有两个表,一个称为users,带有user\u id、user\u name、school\u id和subcat\u id,另一个称为school\u id、school\u name和school\u decile。我用select语句制作了一个搜索表单,它根据用户在搜索表单上选择的子类别id和/或学校id从第一个表中收集结果。现在,我想用用户名、学校名称和学校小数来显示结果。但正如在select语句中一样,我只从第一个表中进行选择,而不是从第二个表中进行选择。如果select语句中没有学
if ($subcat_number !== '0') {
if ($school_number === '0') { //if a school isn't selected
$sql = "SELECT * FROM users WHERE subcat_id=$subcat_number";
} else { //if a school is selected
$sql = "SELECT * FROM users WHERE subcat_id=$subcat_number AND school_id=$school_number ";
}
}
$result = mysqli_query($con, $sql);
$found = mysqli_num_rows($result);
//results table
echo "<table>
<tr>
<th id='namecol'>Search Results:</th>
<th id='schoolcol'></th>
</tr><tr>";
if ($found > 0) {
while ($row = mysqli_fetch_array($result)) {
echo "<td id='namecol'>Name: " . $row['name'] . " </td><td>School: " . $row['school_name'] . " <br>Decile of School: " . $row['school_decile'] . "</td>";
//obviously, the $row['school_name'] and $row['school_decile'] doesn't work as they weren't selected in the select statements
}
} else {
echo "<td>No Expert Found</td></tr>";
}
echo "</table>";
正如@Rasclatt所建议的,您需要使用JOIN
你应该这样做:
<?php
if($subcat_number !== '0') {
$sql = "SELECT users.name, users.school_name, users.school_decile FROM users INNER JOIN schools on users.school_id = schools.school_id WHERE users.subcat_id = $subcat_number";
if($school_number === '0')
$sql .= " AND schools.school_id = '$school_number'";
$result = mysqli_query($con, $sql);
$found = mysqli_num_rows($result); ?>
<table>
<tr>
<th id='namecol'>Search Results:</th>
<th id='schoolcol'></th>
</tr><?php
if($found > 0) {
while ($row = mysqli_fetch_array($result)) { ?>
<tr>
<td id='namecol'>Name: <?php echo $row['name']; ?></td>
<td>School: <?php echo $row['school_name']; ?><br>Decile of School: <?php echo $row['school_decile']; ?></td>
</tr>
<?php }
}
else { ?>
<tr>
<td>No Expert Found</td>
</tr><?php
} ?>
</table><?php
} ?>
您可能应该按照描述进行连接。您应该确保将$sql上的所有条件都放在if语句中,因为$result=mysqli_query$con,$sql;需要$sql。如果If$subcat_number=='0',则剩下一个没有语句的查询。我已重新编码,因此所有内容都在If语句中,但仍然没有显示结果:我认为sql是错误的。您必须将表名前置到要提取的列。现在我并不是说我的是对的,我在连接表方面做得不多,但我知道你需要在列前面加上像users这样的表名。user_idi发现我的select语句哪里出错了,有一个语法错误。感谢您的帮助,然后它给出了这个警告,结果是错误的:mysqli_num_rows期望参数1是mysqli_result,在第74行的/var/www/projectv5/search.php中给出了布尔值
if ($subcat_number !== '0') {
if ($school_number === '0') { //if a school isn't selected
$sql = "SELECT name, school_name, school_decile FROM users INNER JOIN schools on users.school_id = schools.school_id WHERE subcat_id=$subcat_number";
} else { //if a school is selected
$sql = "SELECT name, school_name, school_decile FROM users INNER JOIN schools on users.school_id = schools.school_id WHERE subcat_id=$subcat_number AND school_id=$school_number ";
}
}
$result = mysqli_query($con, $sql);
$found = mysqli_num_rows($result);
//results table
echo "<table>
<tr>
<th id='namecol'>Search Results:</th>
<th id='schoolcol'></th>
</tr><tr>";
if ($found > 0) {
while ($row = mysqli_fetch_array($result)) {
echo "<td id='namecol'>Name: " . $row['name'] . " </td><td>School: " . $row['school_name'] . " <br>Decile of School: " . $row['school_decile'] . "</td>";
}
} else {
echo "<td>No Expert Found</td></tr>";
}
echo "</table>";
<?php
if($subcat_number !== '0') {
$sql = "SELECT users.name, users.school_name, users.school_decile FROM users INNER JOIN schools on users.school_id = schools.school_id WHERE users.subcat_id = $subcat_number";
if($school_number === '0')
$sql .= " AND schools.school_id = '$school_number'";
$result = mysqli_query($con, $sql);
$found = mysqli_num_rows($result); ?>
<table>
<tr>
<th id='namecol'>Search Results:</th>
<th id='schoolcol'></th>
</tr><?php
if($found > 0) {
while ($row = mysqli_fetch_array($result)) { ?>
<tr>
<td id='namecol'>Name: <?php echo $row['name']; ?></td>
<td>School: <?php echo $row['school_name']; ?><br>Decile of School: <?php echo $row['school_decile']; ?></td>
</tr>
<?php }
}
else { ?>
<tr>
<td>No Expert Found</td>
</tr><?php
} ?>
</table><?php
} ?>