【发布时间】:2021-11-13 03:57:27
【问题描述】:
我创建了一个表单,该表单旨在根据工作开发人员的需求使用 PHP 从 mySQL 表中提取雇主信息。当输入为“文本”时,我可以从表中选择行,但在选择使用复选框或单选按钮的行时遇到问题。感谢您提供任何帮助。
这是我的表单代码的一部分:
<h2>Find an employer:</h2><br>
<form action="phpdoc_JDspecsearch.php" method="POST">
<label for="city">City</label><br>
<input type="text" id="city" name="city"><br><br>
<input type="checkbox" id="ft" name="ft" value="1">
<label for="ft">Full-time</label>
<input type="checkbox" id="pt" name="pt" value="1">
<label for="pt">Part-time</label><br><br>
<label for="minwage">Minimum Acceptable Wage (hourly)</label><br>
<input type="number" id="minwage" name="minwage" maxlength="3"><br><br>
这是我在 PHP 中所拥有的:
$city = $_POST['city'];
$ft = $_POST['ft'];
$pt = $_POST['pt'];
$minWage = $_POST['minwage'];
$pt1 = isset($pt);
$ft1 = isset($ft);
$sql = "select * from EmployerInfo where City='$city' AND minWage>=$minWage AND (($pt1=true
and partTime='Yes') or ($ft1=true and fullTime='Yes'))";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc() ) {
echo "<h3>";
echo $row["companyName"]." </h3> <h4>
".$row["Address"]." <br> ".$row["City"]." ".$row["State"]." ".$row["Zip"]." <br>
".$row["minWage"]."";
echo "</h4>";
}
}
else {
echo "<h3>";
echo "0 records";
echo "</h3>";
}
最后,这是我的一些 mySQL 表。请注意,我目前只查看 City、fullTime、partTime 和 minWage:
我的主要问题是,我只有在选中全职/兼职复选框时才能获得结果。如果我只选中一个框,那么当仍然应该有多个结果时,我会得到 0 个结果。有什么帮助吗?抱歉,我知道我的代码有时不是最干净或最有效的。
【问题讨论】:
-
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!