0

検索機能を機能させるには、助けが必要です。以前にこれと同様に動作するコードを作成しました。ハイパーリンクをクリックすると、変数を前方に移動してから SQL スクリプトに割り当てることができるため、DB からこの 1 つだけを取得できます。(事前定義された変数であり、ユーザー入力ではありません)。使用しているスクリプトを変更して、フォーム ベースのテキスト ボックスにユーザー入力を許可し、LIKE ステートメントを使用して単一のデータベース フィールドを検索できるようにしました。

これは私が持っているもので、何も返されません。

入力フォーム

<form class="formFormat"  method="post" action="SearchResult.php">
        <label class="lableInput2">Key Words</label>
        <input type="text" class="textInput" name="JobDetails" />
        <input type="image" src="img/blue/buttonsearch.jpg" value="search" class="buttonInput" alt="Submit Form" border="0" />
</form>

戻るページ

    <?php
include('conn_mysql.inc');
include('corefuncs.php');
 // create database connection
$conn = dbConnect('query');
// initialize flag
$deleted = false;
// get details of selected record
if ($_GET && !$_POST) {
  // check that primary key is numeric
  if (isset($_GET['JobDetails']) && is_numeric($_GET['JobDetails'])) {
    $JobDetails = $_POST['JobDetails'];
    }
  else {
    $JobDetails = NULL;
    }
  if ($JobDetails) {
    $sql = "SELECT * FROM jobs WHERE JobDetails LIKE '%JobDetails%'";
    $result = mysql_query($sql) or die (mysql_error());
    $row = mysql_fetch_assoc($result);
    }
  }
?>
        <p><h1><?php echo ($row['JobTitle'].'<span class="jobid"> #'.$row['IDJobs'].'</span>');?></h1></p>
                <p><strong><?php echo ($row['Location']); ?></strong></p>
                <p><strong>£<?php echo ($row['JobValue']); ?>.00</strong></p>
                <p><strong><a href="" class="colour">www.companyurl.com - BAD IDEA?</a></strong></p>
                <p><strong>Open for Bidding</strong></p>
                    <br />
                <p><span class="jobid">Job Posted: <?php echo ($row['JobPostDate']); ?></span></p>
                <p><?php print ($row['JobDetails']); ?></p>
                <p><span class="jobid">Job Deadline: <?php echo ($row['JobDeadline']); ?></span></p>

出力をループする必要があることはわかっているので、複数表示されますが、現時点では、すべてのフィールドに対して次のエラーが返されるだけです (明らかに、抽出しようとしているものによって行が変わります.

「( ! ) 注意: 未定義の変数: C:\wamp\www\ReEmployWork\SearchResult.php の 54 行目の行」

誰でも手伝ってもらえますか? 私はこれで少し迷っており、間違った方向に進んでいるか、何かを見落としているだけだと思います。

4

3 に答える 3

2

$変数名の前を見逃しました。それ以外の:

$sql = "SELECT * FROM jobs WHERE JobDetails LIKE '%JobDetails%'";

書きます:

$sql = "SELECT * FROM jobs WHERE JobDetails LIKE '%$JobDetails%'";
于 2013-07-04T21:51:34.663 に答える
2

クエリの JobDetails の前に $ を残しました。

また、http://php.net/manual/en/function.mysql-real-escape-string.phpを使用することを忘れないでください

提案:

$escaped_value = mysql_real_escape_string($JobDetails)
$sql = "SELECT * FROM jobs WHERE JobDetails LIKE '%$escaped_value%'";
于 2013-07-04T21:54:35.850 に答える
0

将来の読者のために。変更しようとしたコードを破棄し、最初から使用しました。誰もがこれを行うのに十分な情報が上記にあります。やってみると、私がコーディングしたものと同様の結果になるかもしれません。

$JobDetails =  $_POST['JobDetails'];
$JobDetails = mysql_real_escape_string($JobDetails);
$sql = "SELECT * FROM `jobs` WHERE `JobDetails` LIKE '%{$JobDetails}%'";
$result = mysql_query($sql) or die (mysql_error());
?>

上記は私がコーディングしたもので、夢のように動作します。コードをゼロからコーディングする場合よりも、コードを変更する際に多くの間違いを犯します。そのため、すでに書かれたコードで手を出して遊んでいる場合は、独自の何かが必要な場合は、ゼロから始めるのが最善です.

于 2013-07-05T21:44:11.293 に答える