Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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
Php 搜索查询不显示结果_Php_Mysql_Search - Fatal编程技术网

Php 搜索查询不显示结果

Php 搜索查询不显示结果,php,mysql,search,Php,Mysql,Search,我有一个搜索引擎,但问题是搜索引擎不显示搜索结果,与数据库的连接正确。以下是代码: PHP: HTML: 提前感谢大家 您没有实际处理查询结果。 您必须从返回的结果集中获取每一行,然后使用html输出中返回的字段 试试这个:- if (isset($_POST['search'])) { $searchq = $_POST['search']; $searchq = preg_replace("#[^0-9a-z]#i", "", $searchq); $query =

我有一个搜索引擎,但问题是搜索引擎不显示搜索结果,与数据库的连接正确。以下是代码:

PHP:

HTML:


提前感谢大家

您没有实际处理查询结果。 您必须从返回的结果集中获取每一行,然后使用html输出中返回的字段

试试这个:-

if (isset($_POST['search'])) {
    $searchq = $_POST['search'];
    $searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
    $query = mysql_query(
        "SELECT * FROM tReference 
         WHERE sReference LIKE '%$searchq%' OR 
               sSearch LIKE '%$searchq%' OR 
               sSort LIKE '%$searchq%'") or die("La Recherche est impossible");

    if (mysql_num_rows($query) == 0) {
        $output = "Aucun Résultat Pour Cette Recherche!";
              //English Trans : No results have been Found!
    } else {

        $output .= '<div><ul>';
        while ( $row = mysql_fetch_object($query) ) {
            $output .= '<li>';
            $output .= '<a target="_blanc" href="refrences.php?reference=' . $row->sReference . '" '; 
            $output .= '" title="' . $row->sReference . '">' . $row->sReference . '</a>';
            $output .= '</li>';
        }
        $output .= '</ul></div>';
    }

}

完成了,伙计们,多亏了这一切,解决方案如下:

if (isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
$query = mysql_query(
"SELECT * FROM tReference 
WHERE sReference LIKE '%$searchq%' OR 
   sSearch LIKE '%$searchq%' OR 
   sSort LIKE '%$searchq%'") or die("La Recherche est impossible");

if (mysql_num_rows($query) == 0) {
$output = "Aucun Résultat Pour Cette Recherche!";
} else {

$output .= '<div><ul>';
while ( $row = mysql_fetch_assoc($query) ) {

$sReference = $row['sReference'];

$output .= '<li>';
$output .= '<a target="_blanc" href="refrences.php?reference="' . $sReference . '" '; 
$output .= '" title="' . $sReference . '">' . $sReference . '</a>';
$output .= '</li>';
}
$output .= '</ul></div>';
}

}

感谢@RiggsFolly,也感谢你们所有人。

你们的代码毫无意义。首先,我建议您在单独的安全页面上使用面向对象的PHP。那么您的代码应该更像:

//secure.php
<?php
 function db(){
   return new mysqli('host', 'user', 'password', 'database');
 }
?>

//reference.php
include 'secure.php'; $output = '';
if(isset($_POST['sub'])){
  $db = db(); $searchq = $_POST['search'];
  // What is this for? --->>> $searchq = preg_replace('/[^0-9a-z]/i', "", $searchq);
   $query = $db->query("SELECT * FROM tReference WHERE sReference LIKE '%$searchq%' || sSearch LIKE '%$searchq%' || sSort LIKE '%$searchq%'");
   if($query->num_rows < 1){
     die('Aucun Résultat Pour Cette Recherche!');
   }
   else{
    while($row = $query->fetch_assoc()){
      $sref = $row['sReference'];
      $output.= "<li><a target='_blank' href='refrences.php?reference=$sref' title='$sref '>$sref</a></li>";
   }
   $query->free(); $db->close();
}
<div id='searchd'>
  <div class='searchc'>
    <form action='reference.php' method='post'>
      <input type='text' name='search' placeholder='Recherhcer...' />
      <input type='submit' value='Ok' name='sub' />
      <div class='clear'></div>
    </form>
  </div>
  <ul id='output'><?php echo $output; ?></ul>
</div>

您只获得行数,而不是实际结果。这只是一个数字,不是数组$sReference=$count['sReference'];这是行不通的。你需要得到实际的结果。或者更好的方法是使用。不要使用mysql,因为它们已被弃用。尽快使用mysqli_*或PDO。@t提醒大家这是可行的,但我面临的另一个问题是,如何只得到一个结果,而不是所有匹配的结果不应该[^0-9a-z]I be/[^0-9a-z]/i?我认为第一条语句可以正常工作致命错误:无法将stdClass类型的对象用作数组有一个错误,我建议您向OP解释他/她犯了错误的地方,或者您是如何解决问题的。@sailacrimosa我看到它时已将其修复的,您一定是在我更改它之前复制了它。请重新复制并重试Hanks。不要害怕把结果作为一个对象,它更容易参考和理解。另一个满意的客户!哈哈,很高兴它成功了,赛义夫,干杯-@RiggsFolly是的,我忘了将抓取作为对象返回,因为我正在尝试修复它,Fred-ii-非常感谢much@SaifLacrimosa不客气,我没做什么,但最终结果才是最重要的。和平
if (isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
$query = mysql_query(
"SELECT * FROM tReference 
WHERE sReference LIKE '%$searchq%' OR 
   sSearch LIKE '%$searchq%' OR 
   sSort LIKE '%$searchq%'") or die("La Recherche est impossible");

if (mysql_num_rows($query) == 0) {
$output = "Aucun Résultat Pour Cette Recherche!";
} else {

$output .= '<div><ul>';
while ( $row = mysql_fetch_assoc($query) ) {

$sReference = $row['sReference'];

$output .= '<li>';
$output .= '<a target="_blanc" href="refrences.php?reference="' . $sReference . '" '; 
$output .= '" title="' . $sReference . '">' . $sReference . '</a>';
$output .= '</li>';
}
$output .= '</ul></div>';
}

}
//secure.php
<?php
 function db(){
   return new mysqli('host', 'user', 'password', 'database');
 }
?>

//reference.php
include 'secure.php'; $output = '';
if(isset($_POST['sub'])){
  $db = db(); $searchq = $_POST['search'];
  // What is this for? --->>> $searchq = preg_replace('/[^0-9a-z]/i', "", $searchq);
   $query = $db->query("SELECT * FROM tReference WHERE sReference LIKE '%$searchq%' || sSearch LIKE '%$searchq%' || sSort LIKE '%$searchq%'");
   if($query->num_rows < 1){
     die('Aucun Résultat Pour Cette Recherche!');
   }
   else{
    while($row = $query->fetch_assoc()){
      $sref = $row['sReference'];
      $output.= "<li><a target='_blank' href='refrences.php?reference=$sref' title='$sref '>$sref</a></li>";
   }
   $query->free(); $db->close();
}
<div id='searchd'>
  <div class='searchc'>
    <form action='reference.php' method='post'>
      <input type='text' name='search' placeholder='Recherhcer...' />
      <input type='submit' value='Ok' name='sub' />
      <div class='clear'></div>
    </form>
  </div>
  <ul id='output'><?php echo $output; ?></ul>
</div>