我在这里有点困惑。出于某种原因,我的结果再次变得空白。我试图让用户通过输入他们的名字和姓氏来填写表格,然后从下拉列表中选择5个职位。然后,当他们提交表单时,动作PHP将从数据库中提取特定作业的信息(使用SQL select语句)并显示用户的一些结果。我遇到的问题是,对于我的拉动变量,我的结果已经空白。我已经尝试过六种不同的方式来使这个选择语句正常工作,但它不会让步。我有一个处理displayasselect函数并连接到服务器和所有的PHP(因为某些原因,我在那里粘贴代码的时候给了我麻烦)......但是,毫无疑问,无论如何都证明了所有这一切都很好。和PHP后这里是我的形式:从SQL中获取变量Select语句where子句来自PHP下拉选择框
<form class="form-inline" method="get" action="jobTitlePull.php">
<div class="form-group">
<label for="firstName">First Name: </label>
<input type="text" name = "fname" id="firstName"/>
</div>
<div class="form-group">
<label for="lastName">Last Name: </label>
<input type="text" name = "lname" id="lastName">
</div>
<div class="form-group">
<label for="jobTitle">Job Title: </label>
<?php
displayAsSelect($list);
?>
</div>
<input type="submit" class="btn btn-default"></button>
</form>
每一件事情都显得很好的形式。
我遇到的麻烦来自我的动作PHP,这里我称之为jobTitlePull.php。这里是我的代码:
<?php
$serverName = "xxxxxx";
$userName = "xxxxxx";
$passWord = "xxxxxx";
$database = "xxxxxx"; // last 4 fields purposefully masked.
$firstName = $_GET["fname"];
$lastName = $_GET["lname"];
$jobTitle = $_GET["jobName"];
$conn = mysqli_connect($serverName, $userName, $passWord, $database);
if (!$conn){
die ("<p>Connection failed: ".mysqli_connect_error()."</p>");
}
$queryString = "SELECT jobName, description, posType, basePay FROM Titles WHERE jobName = '$jobTitle'";
$result = $conn->query($queryString);
if(!$result){
die ("<p>Query failed</p>");
}
$record = mysqli_fetch_assoc($result); //I think my problem MAY lie here??
$desc = $record['description']; //or maybe I'm declaring variables wrong?
$pos = $record['posType'];
$base = $record['basePay'];
echo "<h4>Hello $firstName $lastName Job Title: $jobTitle Job Description: $desc Position Type: $pos Base Pay: $base</h4>";
mysqli_close($conn);
?>
select语句中的字段都是正确的。我知道这一点,因为如果我将WHERE jobName = '$jobTitle'
更改为WHERE jobName = jobName
,它将允许我使用while语句并循环并输出数据库标题部分中所有字段的所有数据。但我只需要下拉数据。但是,当我将$jobName
与$jobTitle
(和$jobTitle
IS拉动正确的信息)相等时,它给出了回显语句中$desc
,$pos
和$ base变量的部分的空白结果。
请帮忙。
感谢
当你读取数据,例如'$ record = $ result-> fetch_assoc();'时,你是否尝试过使用面向对象的接口?您还应该考虑使用[准备语句](https://websitebeaver.com/prepared-statements-in-php-mysqli-to-prevent-sql-injection)来防止sql注入。另外,如果你已经知道了,那么检索'jobName'的原因是什么? – Cyclonecode
我认为你的问题是你从'$ _GET'数组获得的数据包含空格或其他内容,请尝试修剪数据$ jobTitle = trim($ _ GET ['jobName']);'。如果你能展示如何实现'displayAsSelect()'函数将会很棒。 – Cyclonecode
显示displayAsSelect()函数。 – Mihai