从来自PHP下拉选择框的SQL Select语句where子句中获取变量

从来自PHP下拉选择框的SQL Select语句where子句中获取变量,php,mysql,forms,select,where-clause,Php,Mysql,Forms,Select,Where Clause,我有点困惑。由于某种原因,我的结果是空白的。我试图让用户填写一张表格,输入他们的名字和姓氏,然后从下拉列表中的5个职位中选择。然后,当他们提交表单时,PHP操作将从数据库中提取特定作业的信息(使用SQL select语句),并为用户显示一些结果。我遇到的问题是,我的拉取变量的结果返回为空。我尝试了半打不同的方法来让这个select语句工作,但它不会改变 这是我的表单,我的表单中有PHP,它处理displayasselect函数并连接到服务器和其他所有东西(出于某种原因,我在这里粘贴该部分的代码时

我有点困惑。由于某种原因,我的结果是空白的。我试图让用户填写一张表格,输入他们的名字和姓氏,然后从下拉列表中的5个职位中选择。然后,当他们提交表单时,PHP操作将从数据库中提取特定作业的信息(使用SQL select语句),并为用户显示一些结果。我遇到的问题是,我的拉取变量的结果返回为空。我尝试了半打不同的方法来让这个select语句工作,但它不会改变

这是我的表单,我的表单中有PHP,它处理displayasselect函数并连接到服务器和其他所有东西(出于某种原因,我在这里粘贴该部分的代码时遇到了麻烦)……但毫无疑问,我已经验证了这一切都是正确的。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);
?>

<代码> 我建议您对当前的查询采取不同的方法,并考虑一些安全方法来处理代码。

首先,一切基本保持不变:

$serverName = "xxxxxx";
$userName = "xxxxxx";
$passWord = "xxxxxx";
$database = "xxxxxx"; // last 4 fields purposefully masked.
将您的连接更改为OOP方法,在处理准备好的statemtn时会更容易

$conn = new mysqli($serverName, $userName, $passWord, $database);
if (!$mysqli->connect_error){
    die ("<p>Connection failed: ". $mysqli->connect_error() ."</p>");
}
现在我们来看一些重要的变化:

// let's start changing your query here
// use prepared statements
$queryString = "SELECT jobName, description, posType, basePay FROM Titles WHERE jobName = ?";
然后您必须准备查询

if( $stmt = $mysqli->prepare( $queryString ) ) {
    //bind the parameter of `jobName`
    $stmt->bind_param('s', $jobName);
    // execute the query
    $stmt->execute();

    // get all of the results
    $results = $stmt->get_result();
    // fetch the results in an associative array
    $row = $result->fetch_assoc();

    // close stmt connection
    $stmt->close();
} else {
    $error = array(
        'is_error' => true,
        'error' => 'There was a problem preparing the SQL'
    );

    print_r($error);
}
现在您拥有了
$row
数组中的所有记录,您可以使用它来执行所需的操作。您可以通过打印整个阵列来确保数据存在:

print_r($row);

干杯

在获取数据时,您是否尝试过使用面向对象接口,即
$record=$result->fetch_assoc()?您还应该研究如何使用sql来防止sql注入。另外,如果您已经知道,那么检索
jobName
的原因是什么?我认为您的问题是从
$\u GET
数组中获取的数据包含空格或其他内容,请尝试修剪数据
$jobTitle=trim($\u GET['jobName'])。如果您能演示如何实现
displayAsSelect()
函数,那就太好了。显示displayAsSelect()函数。
print_r($row);