如何在PHP MySQL搜索中找不到结果时显示消息

时间:2013-01-15 04:12:17

标签: php html mysql

我试过但它不起作用。如果没有返回任何内容,我怎样才能显示“未找到结果”这样的消息?

我的PHP脚本是:

<?php
$pnam=$_POST["prodnam"];
if($pnam=="")
{
  echo("Please enter a search…");
  return;
}

include("connection.php");

$SQL="SELECT * FROM results WHERE prodnam='".$pnam."'";
$run=mySQL_query($SQL,$con) or die ("SQL query error"); 
$rec=mysql_fetch_array($run);

echo ("<table align='center' style='
  font-family: Arial, Helvetica, sans-serif;
  color:#ffffff;
  font-size: 15px;
  text-align:center;'>");
echo ("<tr>");
echo ("<td>".$rec["dtlsnam"]."</td>");
echo ("</tr>");
echo ("</table>");
?>

5 个答案:

答案 0 :(得分:1)

除了陈述使用PDOmysqli的明显陈述之外,这里还有您需要的功能:mysql_num_rows()

所以,请按以下方式检查:

if( mysql_num_rows($run) == 0 ) exit( "No results" );

答案 1 :(得分:0)

使用以下代码检查您的查询是否提取了记录。

$rec=mysql_fetch_array($run);
if(mysql_num_rows($run)>0)
{

// messaege here

}

并使用以下代码

降低SQL注入的风险
$pnam = stripslashes($pnam);

答案 2 :(得分:0)

使用mysql_num_rows检查查询返回的行数,并根据处理情况。

 $run=mySQL_query($SQL,$con) or die ("SQL query error");
 if(mysql_num_rows($run)>0) { 
        $rec=mysql_fetch_array($run);



        echo ("<table align='center' style='
            font-family: Arial, Helvetica, sans-serif;color:#ffffff;
            font-size: 15px;
            text-align:center;'>");
        echo ("<tr>");
        echo ("<td>".$rec["dtlsnam"]."</td>");
        echo ("</tr>");
        echo ("</table>");
}
else
{
    echo 'no rows present';
}

答案 3 :(得分:0)

您可以使用mysql_num_rows()来获取返回的记录数。

<?php

$num_rows = mysql_num_rows($run);

if($num_rows==0)
{
  echo 'No records found';
}
else
{
 $rec=mysql_fetch_array($run);

  echo ("<table align='center' style='
                font-family: Arial, Helvetica, sans-serif;color:#ffffff;
                font-size: 15px;
                text-align:center;'>");
            echo ("<tr>");
            echo ("<td>".$rec["dtlsnam"]."</td>");
            echo ("</tr>");
            echo ("</table>");

}

?>

答案 4 :(得分:0)

我只是将查询从mysql_切换到PDO。我不会只是告诉你改变,而是会尽力在PDO中把它弄好......如果我陷入困境,我会学到一些东西。希望你可以接受它并从中构建并改进你正在做的事情,因为我继续改进我的查询。我只有一个小应用程序升级了几个大的应用程序。仍在学习阶段。

老实说,如果我现在没有堆叠溢出,我永远不会升级。每个使用mysql_connect的人都会被它击中。让我离开我的小程序员框并注意到。谢谢你们!

好吧,我准备搞砸了,所以不要笑。

P.S。不敢相信没有人在问题中提到过表。如果多个产品具有相同名称会发生​​什么?

$stmt=$con->prepare("SELECT * FROM results WHERE prodnam=:pnam");  // named variables in prepared
$stmt->bindValue(':pnam', $pnam, PDO::PARAM_STR);  // bind it to the variable
$stmt->execute();
$hit = $stmt->rowCount();  // count them rows

if($hit) {
   while($results = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
      echo $results['dtlsnam'];
      /* I ignored the fact you are using tables because maybe it is a good tabular layout 
* you are planning.  You can figure out the table part.  But best to loop and put the table
*start before the loop and the table end after the loop and just loop the rows.
*/
   }
}

//
// Then in your connection include you want something like this.
//
// put in the values for your variables.
<?php
try {
$con = new PDO("mysql:host=" . $DB_MYSQL_HOST. ";dbname=" . $DB_MYSQL_NAME, $DB_MYSQL_USER,   $DB_MYSQL_PASS);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>