在PHP中创建文件下载时捕获MySQL错误

时间:2014-07-03 09:05:04

标签: php mysql

我想在我的网络应用程序中添加一个“下载信息”按钮,这样当用户输入“user_id”并点击该按钮时,他/她的个人信息将被下载到“user.txt”文件中。

我在后端使用PHP作为主要语言和MySQL。

因此,当用户点击按钮时,我使用以下方式更改标题:

$filename = 'user.txt';
header('Content-Description: File Transfer');
header('Content-Disposition: attachment; filename="' . $filename . '"');

要导出到文件中的数据是从许多表中获取的,并且数量巨大。而且约束是我无法在服务器上保存那么多数据。因此,一旦从数据库中检索到它,我就必须将其刷新到文件中。

但问题是我想在MySQL级别捕获错误。例如,如果执行查询时出现问题或表user_details不存在,那么我想在用户的Web浏览器中显示MySQL的相应错误。 但在这种情况下,错误会打印在文件本身中。

此问题的解决方法是什么?

4 个答案:

答案 0 :(得分:0)

首先编写查询并且您必须检查如果用户找到了代码以便下载其他明智的显示错误消息。

$result = mysqli_query("SELECT * FROM `user_details` WHERE `user_id` = :user_id LIMIT 1");

if(isset( $result['user_id']) && $result['user_id']!="")
{
  $filename = 'user.txt';
  header('Content-Description: File Transfer');
  header('Content-Disposition: attachment; filename="' . $filename . '"');
  echo 'Username:' . $result['user_id'] . "\n";
}
else
{
  echo "Error Message";
}

答案 1 :(得分:0)

您可以在下载文件之前检查查询结果;

$link = some db connections
$result = mysqli_query('your_query');
if (!$result) {
    die('Technical error occured: ' . mysqli_error($link));
} else {
    $filename = 'user.txt';
    header('Content-Description: File Transfer');
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    ......
}

答案 2 :(得分:0)

也许您可以先做所有数据库查询并将数据填充到变量parexample $ out,如果发现某些错误,可以向用户显示此信息。如果所有内容都没有错误地传递,那么你可以使用echo $ out来执行头函数和输出内容。

答案 3 :(得分:0)

$qry  = "SELECT * FROM `user_details` WHERE `user_id` = :user_id LIMIT 1";

if ($result = $mysqli->query($qry)) {
    if ($result->num_rows > 0) {
        $row = $result->fetch_object();
        $userName = $row->user_name;
        echo 'Username:' . $userName . "\n";    
    }
}