0

我试过了,但它不起作用。当没有返回任何内容时,如何让它显示类似“未找到结果”的消息?

我的 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>");
?>
4

5 回答 5

1

除了说明要使用PDOor的明显语句之外mysqli,这是您需要的函数:mysql_num_rows()

因此,只需按以下方式进行检查:

if( mysql_num_rows($run) == 0 ) exit( "No results" );
于 2013-01-15T04:17:10.377 回答
0

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

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

// messaege here

}

并且还通过使用以下代码来降低 SQL 注入的风险

$pnam = stripslashes($pnam);
于 2013-01-15T04:17:33.277 回答
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';
}
于 2013-01-15T04:17:44.793 回答
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>");

}

?>
于 2013-01-15T04:18:35.317 回答
0

我也只是将我的查询从 mysql_ 切换到 PDO。与其只是告诉你改变,我会尽力在 PDO 中把它做好……如果我搞砸了,我会学到一些东西。希望你能接受它并从中构建并改进你正在做的事情,因为我继续改进我的查询。我只有一个小应用程序升级了几个大应用程序。还在学习阶段。

老实说,如果我现在一直没有遇到堆栈溢出,我永远不会升级。每个使用 mysql_connect 的人都会受到打击。让我走出我的小程序员盒子并注意到。多谢你们!

好的,我要搞砸了,所以不要笑。

PS 不敢相信没有人在问题中提到表格。如果不止一种产品具有相同的名称会怎样?

$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();
}
?>
于 2013-01-15T04:42:45.107 回答