我在這裏有點困惑。出於某種原因,我的結果再次變得空白。我試圖讓用戶通過輸入他們的名字和姓氏來填寫表格,然後從下拉列表中選擇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