PHP表单搜索MySQL DB

时间:2013-07-04 21:42:51

标签: php sql database forms search

我需要一些帮助才能让搜索功能正常工作。我以前编写过与此类似的东西,如果我单击一个超链接,我就可以向前传送一个变量,然后将其分配到一个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“

有人可以帮忙吗?我对此感到有点迷茫,我相信我要么朝着错误的方向前进,要么只是错过了一些东西。

3 个答案:

答案 0 :(得分:2)

您在变量名称之前错过了$。而不是:

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

写:

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

答案 1 :(得分:2)

您在查询中将作业详细信息留在了$。还记得使用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%'";

答案 2 :(得分: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());
?>

以上是我编码的内容,它像梦一样运行。如果你只是从头开始编写代码,那么你修改代码会犯很多错误,所以如果你正在学习dabble并玩已编写的代码,但如果你自己需要一些独特的东西,那么你最好从头开始。