我试过但它不起作用。如果没有返回任何内容,我怎样才能显示“未找到结果”这样的消息?
我的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>");
?>
答案 0 :(得分:1)
除了陈述使用PDO
或mysqli
的明显陈述之外,这里还有您需要的功能: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();
}
?>