0

我需要一些帮助才能使搜索功能正常工作。我以前编写过类似的代码,如果我点击一个超链接,我可以将一个变量向前传递,然后将它分配给一个 SQL 脚本,这样它就只从数据库中拉回这件事。(预定义变量,而不是用户输入)。我尝试修改我一直在使用的脚本,以允许基于表单的文本框具有用户输入,然后使用 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>

我知道我需要循环输出,因此它显示多个,但目前它只是为每个字段返回以下错误(obv 行会根据尝试提取的内容而变化。

“(!)注意:未定义的变量:第 54 行 C:\wamp\www\ReEmployWork\SearchResult.php 中的行”

有人可以帮忙吗?我对此有点迷茫,我相信我要么走错了方向,要么只是错过了一些东西。

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 回答