Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL数据库的PHP表单搜索_Php_Sql_Database_Forms_Search - Fatal编程技术网

MySQL数据库的PHP表单搜索

MySQL数据库的PHP表单搜索,php,sql,database,forms,search,Php,Sql,Database,Forms,Search,我需要一些帮助让搜索功能正常工作。我以前编写过类似的代码,如果我点击一个超链接,我可以向前携带一个变量,然后将其分配到一个SQL脚本中,这样它就只从数据库中提取这一项。(预定义变量,而不是用户输入)。我尝试修改我一直使用的脚本,以允许基于表单的文本框具有用户输入,然后通过单个数据库字段使用LIKE语句进行搜索 这就是我所拥有的,它不会归还任何东西 输入表格 <form class="formFormat" method="post" action="SearchResult.php"&g

我需要一些帮助让搜索功能正常工作。我以前编写过类似的代码,如果我点击一个超链接,我可以向前携带一个变量,然后将其分配到一个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>

.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请求,我已经删除了数字部分(我没有把重点放在这一点上,因为这不是我主要关心的问题。它现在已经不存在了。仍然不明白为什么它不起作用)