当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循环.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...