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