如果MySQL查询为NULL,则执行操作

时间:2013-03-05 17:53:17

标签: php

我想要做的是如果查询为空或者代码名称错误,请将访问者发送到错误页面?我的当前脚本回应了以下“这个网站上没有黑客攻击!”,但这一切都发生在发送原始查询的同一页面上。

目标是将访问者发送到我的自定义错误页面,该页面位于第一页所在的同一文件夹中。

http://www.example.com/download/file.php 

http://www.example.com/download/error.php 

我当前的脚本是

    <?php
$host = 'localhost';
$db_name = 'My_DB_Name';
$db_user = 'MY_User_Name';
$db_pass = '******';
$path_to_file_directory = 'download/files/';
mysql_connect( $host, $db_user, $db_pass);
mysql_select_db( $db_name ) or die(mysql_error());

$file_code = filter_input( INPUT_GET, 'urlid' );

# Query for file info
$res = mysql_query("SELECT * FROM `Files` WHERE `urlID`='".$file_code."'") or die ( mysql_error() );

# If query is empty, there is a bad code name
# This catches possible hacking attempt.
if( mysql_num_rows($res) == 0 )
{
echo 'There will be no hacking on this website! ';
exit();
} 

# Save file info into an array called "$info"
$info = mysql_fetch_assoc($res); 

# File path is below
$file_path = $path_to_file_directory.$info['file_name'];

# Now push the download through the browser
# There is more than 1 way to do this.
if (file_exists($file_path)) {
echo '<p>if it does not: <a href="'.$file_path.'">click here to try again</a>.</p>';
exit;
}

?> 

我知道我必须将echo更改为其他内容,但我不知道我必须使用什么,因为只需将链接放在echo内的错误页面中,只会在我的file.php页面上回显它/ p>

请帮忙

2 个答案:

答案 0 :(得分:2)

我猜您需要的是重定向到另一个页面。您可以使用header功能。

<?php
if( mysql_num_rows($res) == 0 )
{
  header('Location: /nohacking.php');
  exit();
} 
?>

这会将您的浏览器重定向到nohacking.php文件。

答案 1 :(得分:1)

只要你还没有发送任何标题(例如,基本上,这是在任何HTML之前):

if(mysql_num_rows($res) == 0)
{
die(header("Location: error.php"));
}

header()函数将重定向页面,而die()函数将停止处理PHP的其余部分。