无论执行如何,PHP更新都会显示成功消息

时间:2015-09-15 10:48:42

标签: php mysql sql-update

我有一个SQL语句,它应该在我的数据库中更新记录。

该语句有效,但在按下按钮之前显示成功消息。这意味着始终显示成功消息。

此外,如果您点击一条记录进行更新,并且您决定不想更新任何内容并单击取消按钮或在其他链接上离开该页面,它将使用空白输入更新记录。

这是我的代码:

try {

    $conn = new PDO('mysql:host=' . Config::get('mysql/host') . ';dbname=' . Config::get('mysql/db'), Config::get('mysql/username'), Config::get('mysql/password'));
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $job_id = $_GET['job_id'];

    $jobs = DB::getInstance()->query("SELECT * FROM jobs WHERE job_id=$job_id");

    $job_title = isset($_POST['job_title']) ? $_POST['job_title'] : '';
    $date = isset($_POST['date']) ? $_POST['date'] : '';
    $location = isset($_POST['location']) ? $_POST['location'] : '';
    $type = isset($_POST['type']) ? $_POST['type'] : '';
    $description = isset($_POST['description']) ? $_POST['description'] : '';
    $education = isset($_POST['education']) ? $_POST['education'] : '';
    $experience = isset($_POST['experience']) ? $_POST['experience'] : '';
    $competencies = isset($_POST['competencies']) ? $_POST['competencies'] : '';
    $how_apply = isset($_POST['how_apply']) ? $_POST['how_apply'] : '';

    $sql = "UPDATE jobs SET job_title='$job_title', date='$date', location='$location', type='$type', description='$description', education='$education', experience='$experience', competencies='$competencies', how_apply='$how_apply' WHERE job_id=$job_id";
    $result = $conn->prepare($sql);
    $result->execute();

    echo $result->rowCount() . ' record updated successfully';
    Redirect::to('manage_jobs.php');

} catch (PDOException $e) {
    echo $sql . '<br />' . $e->getMessage();
}

此外,如果查询被认为是成功的话,它应该会将您重定向到列表中,如果是记录,但是,只要打开记录并单击UPDATE链接,它就会重定向回来,但它会替换当前数据。空白的价值,甚至没有让我有机会更新任何东西。它不会打开更新表单。

1 个答案:

答案 0 :(得分:2)

您应该将代码包装到if

if (isset($_POST['job_title'])) {
    //Your entire code that you posted
}

你应该预先编译所有输入,否则,它会为你填充空输入。