MySQL数据库的PHP表单搜索
我需要一些帮助让搜索功能正常工作。我以前编写过类似的代码,如果我点击一个超链接,我可以向前携带一个变量,然后将其分配到一个SQL脚本中,这样它就只从数据库中提取这一项。(预定义变量,而不是用户输入)。我尝试修改我一直使用的脚本,以允许基于表单的文本框具有用户输入,然后通过单个数据库字段使用LIKE语句进行搜索 这就是我所拥有的,它不会归还任何东西 输入表格MySQL数据库的PHP表单搜索,php,sql,database,forms,search,Php,Sql,Database,Forms,Search,我需要一些帮助让搜索功能正常工作。我以前编写过类似的代码,如果我点击一个超链接,我可以向前携带一个变量,然后将其分配到一个SQL脚本中,这样它就只从数据库中提取这一项。(预定义变量,而不是用户输入)。我尝试修改我一直使用的脚本,以允许基于表单的文本框具有用户输入,然后通过单个数据库字段使用LIKE语句进行搜索 这就是我所拥有的,它不会归还任何东西 输入表格 <form class="formFormat" method="post" action="SearchResult.php"&g
<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>
.00英镑
公开招标
职位公告:
工作截止日期:
我知道我需要循环输出,因此它会显示多个字段,但此时它只会为每个字段返回以下错误(obv)。行会根据试图提取的内容而变化
“(!)注意:未定义变量:中的行
C:\wamp\www\ReEmployWork\SearchResult.php,第54行“
有人能帮忙吗?我对此有点不知所措,我相信我不是走错了方向,就是错过了什么。您错过了变量名前面的
$
。而不是:
$sql = "SELECT * FROM jobs WHERE JobDetails LIKE '%JobDetails%'";
写:
$sql = "SELECT * FROM jobs WHERE JobDetails LIKE '%$JobDetails%'";
变量名之前缺少了
$
。而不是:
$sql = "SELECT * FROM jobs WHERE JobDetails LIKE '%JobDetails%'";
写:
$sql = "SELECT * FROM jobs WHERE JobDetails LIKE '%$JobDetails%'";
您在查询中留下了$before JobDetails 还要记住使用 建议:
$escape\u value=mysql\u real\u escape\u字符串($JobDetails)
$sql=“从作业中选择*,其中包含作业详细信息,如“%$逸出值%”;
您在查询中留下了$before JobDetails
还要记住使用
建议:
$escape\u value=mysql\u real\u escape\u字符串($JobDetails)
$sql=“从作业中选择*,其中包含作业详细信息,如“%$逸出值%”;
供未来读者阅读。我放弃了我试图修改的代码,从一开始就采用了它。上面有足够的信息供任何人使用。试试看,你可能会得到与我编写的代码类似的结果
$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());
?>
以上是我编写的代码,它运行起来就像一场梦。如果你只是从头开始编写代码,那么修改代码时会犯更多的错误,因此如果你正在学习涉猎和使用已经编写的代码,但是如果你自己需要一些独特的东西,那么你最好从头开始。对于未来的读者来说。我放弃了我的代码ed需要修改,我从一开始就做了。上面有足够的信息,任何人都可以这样做。试一试,你可能会得到类似于我编码的结果
$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并使用已经编写的代码,但是如果你自己需要一些独特的东西,那么最好从头开始。1.不要使用mysql_*函数,它们是不受欢迎的TED。2。在SQL查询中使用CGI输入之前,您的代码易受SQL注入的影响。1。不要使用mySQL**函数,它们被弃用。2。在SQL查询中使用CGI输入之前,可以避免CGI输入。您的代码易受SQL注入的影响。您应该考虑使用MySQLI代替MySQL好的思想来逃避特殊密钥,我想。帮助避免SQL注入等…但$符号仍然没有解决我的问题。你应该考虑使用mySQLI而不是MySQL好主意来逃避特殊密钥,我想这有助于避免SQL注入等…但是$符号仍然没有解决我的问题。我不认为是这样,因为它仍然不工作。@syclid您正在检查$\u GET in,如果在使用$\u POST['JobDetails']-您使用的是GET请求还是POST请求?@syclid您也在检查$\u GET['JobDetails']是数字。你确定,这个条件是正确的,并且不是任意字符串吗?也许,删除它会有帮助。感谢User4035,它们是很好的发现。我在玩代码,从网上找到的东西开始工作。我最初使用的是GET请求,我已经删除了数字部分(没有关注这一点,因为这不是我主要关心的问题。它现在已经不存在了。仍然无法解释它为什么不起作用)我不认为是这样,因为它仍然不起作用。但是注意到这一点的眼睛很好。@syclid您正在检查$u GET in if,同时使用$u POST['JobDetails']-您使用的是GET请求还是POST请求?@syclid您也在检查,$\u GET['JobDetails']是数字。你确定,这个条件是正确的,并且不是任意字符串吗?也许,删除它会有帮助。感谢User4035,它们是很好的发现。我在玩代码,从网上找到的东西开始工作。我最初使用的是GET请求,我已经删除了数字部分(我没有把重点放在这一点上,因为这不是我主要关心的问题。它现在已经不存在了。仍然不明白为什么它不起作用)