微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我正在使用此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');

}

这是不正确的?它似乎工作,但我认为必须有一个更清洁的方式这样做/它可能是不好的做法.

解决方法:

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

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

如果您只期望一行,则不需要使用while循环.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐