ここで少し混乱します。何らかの理由で私の結果が空白に戻ってきています。私は、ユーザーが姓と名字を入力し、ドロップダウンリストで5つの職種を選んでフォームを記入できるようにしようとしています。フォームを送信すると、アクションPHPはその特定のジョブに関する情報をデータベースから取り出し(SQL select文を使用して)、ユーザーにいくつかの結果を表示します。私が抱えている問題は、引き出された変数が空に戻ってくるという結果です。私はこの選択ステートメントを動作させるために6つの異なる方法を試しましたが、それは動かないでしょう。SQLから変数を取得するSelect文from where where PHPドロップダウン選択ボックス
ここに私のフォームがあり、私はdisplayasselect関数を処理してサーバーに接続するPHPを持っています(何らかの理由でここにコードを貼り付けるのが面倒です)...しかし、すべてのことがどんなところでもうまくいくことを確認しています。 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>
すべてのものがフォームに表示されます。
私が抱いている問題は、ここで私がjobTitlePull.phpと呼んでいる私のアクション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
が正しい情報を引っ張っていると)同値化すると、$desc
、$pos
、$ baseの変数があるecho文の部分で空白の結果が出ます。
助けてください。
おかげ
データをフェッチするときにオブジェクト指向インターフェイスを使用しようとしましたか?つまり、$ record = $ result-> fetch_assoc();また、SQLインジェクションを防ぐために[prepared statement](https://websitebeaver.com/prepared-statements-in-php-mysqli-to-prevent-sql-injection)を使用して調べる必要があります。また、あなたがすでにそれを知っているなら、 'jobName'を取得する理由は何ですか? – Cyclonecode
あなたの問題は、 '$ _GET'配列から得られたデータに空白などが含まれていると思います。$ jobTitle = trim($ _ GET ['jobName']);'。 'displayAsSelect()'関数がどのように実装されているかを示すことができれば素晴らしいでしょう。 – Cyclonecode
displayAsSelect()関数を表示します。 – Mihai