我需要一些帮助才能让搜索功能正常工作。我以前编写过与此类似的东西,如果我单击一个超链接,我就可以向前传送一个变量,然后将其分配到一个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“
有人可以帮忙吗?我对此感到有点迷茫,我相信我要么朝着错误的方向前进,要么只是错过了一些东西。
答案 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并玩已编写的代码,但如果你自己需要一些独特的东西,那么你最好从头开始。