我正在使用此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');
}
这是不正确的?这似乎有效但我认为必须有一个更清洁的方法来做这个/它可能是不良做法。
答案 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循环。