【发布时间】:2016-05-19 12:38:07
【问题描述】:
我有以下带有基本检查条件的代码,用于使用 mysql 和 php 过滤数据。
我有两个名为 proc_report 和 proc_report_filtered 的过程,一个用于获取所有数据,另一个用于根据表单中设置的 from 和 to 过滤器显示数据。 (submit_filter 是提交按钮的名称,from 和 to 是表单中的两个输入字段。)
以前,当 try 和 catch 语句用于工作和显示所有数据的代码被写入代替 display_default_data();在其他部分。但是为了缩短代码,我使用了函数 display_default_data() 来避免一次又一次地重写同一段代码。但令人惊讶的是,当我运行这段代码时,我没有看到任何结果。
<?php
function display_default_data()
{
try {
$records = $db->query("call proc_report");
$records->setFetchMode(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
die("Some problem getting data from database !!!" . $e->getMessage());
}
}
if (isset($_POST['submit_filter'])) {
if (isset($_POST['from'], $_POST['to'])) {
if (!empty($_POST['from']) && !empty($_POST['to'])) {
try {
$from = $_POST['from'];
$to = $_POST['to'];
$records = $db->prepare("CALL proc_report_filtered(?,?)");
$records->execute(array($from, $to));
} catch (PDOException $e) {
die("Some problem getting data from database !!!" . $e->getMessage());
}
} else {
echo "Enter some values before pressing Filter button !";
display_default_data();
}
} else {
echo "Please set values ";
display_default_data();
}
} else {
display_default_data();
}
?>
这是在 php 中使用函数和 try、catch 语句的正确方法吗?如果在任何地方出错,请建议我。
我也觉得代码很长?有没有更好的缩短它的建议?
【问题讨论】: