当SQL查询出现空白时,使用PHP重定向

时间:2015-04-26 16:42:26

标签: php mysql sql

我正在使用此PHP脚本在MySQL数据库/表上返回带有相应URL值的搜索输入值。我们的想法是将它们附加到重定向以自动跳转到该页面。

<?php
$searchResults = $_POST['search'];
$dbhost = 'localhost';
$dbuser = 'admin';
$dbpass = 'pwd';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('Could not connect: ' . mysql_error());
}
$sql = "SELECT url
    FROM Table_1
    WHERE input = '" .$searchResults."'";

mysql_select_db('database_1');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
  die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
    $redirect = $row['url'];
    header('Location:'.$redirect);  
} 

要捕获与Table_1上的值不匹配的任何输入,请添加此If语句。它将采用任何不相关或拼写错误的输入并将其重定向到xyz.html

if (mysql_num_rows($retval) < 1)  {

header('Location: xyz.html');

}

这是不正确的?这似乎有效但我认为必须有一个更清洁的方法来做这个/它可能是不良做法。

2 个答案:

答案 0 :(得分:2)

你使用的方式是错误的,可能会引起很多麻烦。

2种方式:

 1.If result is x then redirect to page A.

 2.If result is x then load view just similar like page A with same header ,footer.

因此,按照第二种方式,当查询为空时,加载您想要的特定视图。

对于您的示例,假设您访问购物车网站,您点击了鞋子类别,如果没有鞋子,页面显示消息Sorry stock is empty, no shoes,如果库存为空,则不会将您重定向到任何页面。

答案 1 :(得分:2)

如果您只期望查询中的一个结果,那么它将起作用 但如果有多行,则会加载最后一行。那么效率低下。
你也可以直接这样做:

if($retval)
{ .$row = mysql_fetch_array($retval, MYSQL_ASSOC);
 header('Location:'.$row);
}
else 
header('Location:xyz.html');

如果您只想要一行,则不需要使用while循环。