2015-08-25 2 views
0

Я пишу скрипт прямо сейчас, чтобы обновить ввод данных MySQL через форму PHP. Я знаю, что в Stackoverflow есть много учебников, а также множество ответов. Моя проблема в том, что я получаю сообщение «Обновленные данные успешно», но данные не обновляются внутри моей базы данных. Может быть, кто-то найдет ошибку или скажет мне, что я сделал не так, и что я должен изменить. Здесь нужно код:Обновление записи MySQL через PHP-форму

Форма:

<?php 
session_start(); 

if(empty($_SESSION)) // if the session not yet started 
    session_start(); 

if(!isset($_SESSION['email'])) { //if not yet logged in 
    header("Location: login.php");// send to login page 
    exit; 
} 

include 'header.php'; 

$get = "SELECT * FROM user email WHERE email = '".$_SESSION['email']."'"; 
$result_get = mysqli_query($connect, $get); 
$_SESSION['data'] = mysqli_fetch_assoc($result_get); 

?> 
    <form method="POST" action="update_profile.php" class="form-horizontal form-label-left"> 

    <div class="form-group"> 
    <label class="control-label col-md-3 col-sm-3 col-xs-12">Vorname:</label> 
    <div class="col-md-9 col-sm-9 col-xs-12"> 
    <input type="text" name="firstname_parent" class="form-control" value="<?php echo $_SESSION['data']['firstname_parent']; ?>"> 
    </div> 
    </div> 
    <button type="submit" name="update" value="update" class="btn btn-warning btn-lg btn-block">PROFIL VERVOLLSTÄNDIGEN</button> 
    </form> 

update_profile.php:

<?php 
session_start(); 
// Create connection credentials 
$db_host = 'localhost'; 
$db_name = 'DBNAME'; 
$db_user = 'DBUSER'; 
$db_pass = 'DBPASS'; 

// Create mysqli object 
$connect = new mysqli ($db_host, $db_user, $db_pass, $db_name); 

// Error Handler 
if ($connect->connect_error) { 
    printf ("Connection failed: %s\n", $connect->connect_error); 
    exit(); 
} 

// Check if form is submitted 
if (isset ($_POST['update'])) { 
    $update_firstname_parent = mysqli_real_escape_string ($connect, $_POST['firstname_parent']); 
} 


$sql = mysqli_query ($connect, "UPDATE `user` SET 
    firstname_parent='".$update_firstname_parent."' WHERE email = '".$_SESSION['email']."'"; 

if (mysqli_affected_rows($connect) == 0) //<-- 
{ 
    die('Could not update data: ' . mysql_error()); 
} else { 
    echo "Updated data successfully\n"; 
} 
mysql_close($connect); 

?> 

EDIT: Я изменил update_profile.php из-за некоторые комментарии здесь. Теперь я не получаю сообщение «Обновленные данные успешно», теперь я получаю только пустую страницу, и никакие данные не обновляются внутри базы данных.

Спасибо, Крис

+0

Вы пробовали '... mysqli _affected_rows ($ sql) == 1 ... '? – 099

+0

Помимо того, что ваш запрос на обновление неверен, кажется, что вы перевернули сообщения об успешном завершении/сбое. –

+0

@ 099 спасибо за ваш совет, я попробовал его, но тот же эффект. Я получаю сообщение «Обновленные данные успешно», но никаких изменений внутри моей базы данных –

ответ

1

Ваш запрос на обновление неправильно. Изменить это

$sql = mysqli_query ($connect, "UPDATE `user` WHERE email = '".$_SESSION['email']."' (`firstname_parent`) 
     VALUES ('$update_firstname_parent')"); 

в

$sql = mysqli_query ($connect, "UPDATE `user` SET 
    firstname_parent='".$update_firstname_parent."' WHERE email = '".$_SESSION['email']."'"); 
+0

Спасибо за ваш код. Я попробовал этот запрос. Теперь я получаю только пустую страницу. Нет сообщения «Обновлено данные успешно» или любое сообщение об ошибке. Также в базе данных ничего не изменилось. –

+0

@ChristophC., Извините, произошла синтаксическая ошибка. Попробуйте еще раз –

+0

Вот и все! Потрясающие!! Большое спасибо! Только одно я не понимаю. Прямо сейчас у моей формы есть только один вход! Если моя форма получает около 20 входов, я должен объявить все, что вы сделали? Итак, например: «UPDATE' user' SET firstname_parent = '". $ Update_firstname_parent."', Lastname_parent = '". $ Update_lastname_parent."', Street_parent = '". $ Update_street_parent." И т. Д. Я прав? –

0

Не ваше if утверждение неверно? Вы проверяете, изменилось ли что-то, а затем выдается ошибка, а не наоборот?

if (mysqli_affected_rows($connect) == 1) 
{ 
    die('Could not update data: ' . mysql_error()); 
} else { 
    echo "Updated data successfully\n"; 
} 

в

if (mysqli_affected_rows($connect) == 0) //<-- 
{ 
    die('Could not update data: ' . mysql_error()); 
} else { 
    echo "Updated data successfully\n"; 
} 
+0

Сначала проверьте запрос на обновление OP !!! – Saty

0

ваш запрос неправильно.

USE "UPDATE ''user SET firstname_parent='".$update_firstname_parent."' WHERE email = '".$_SESSION['email']."'";

0

Был синтаксическая ошибка в вашем UPDATE и отсутствующего session_start(); в файле update.php. Это должно работать нормально.

update.php

<?php 
session_start(); 
// Create connection credentials 
$db_host = 'localhost'; 
$db_name = 'DBNAME'; 
$db_user = 'DBUSER'; 
$db_pass = 'DBPASS'; 

// Create mysqli object 
$connect = new mysqli ($db_host, $db_user, $db_pass, $db_name); 

// Error Handler 
if ($connect->connect_error) { 
    printf ("Connection failed: %s\n", $connect->connect_error); 
    exit(); 
} 

// Check if form is submitted 
if (isset ($_POST['update'])) { 
    $update_firstname_parent = mysqli_real_escape_string ($connect, $_POST['firstname_parent']); 
} 


$sql = mysqli_query ($connect, "UPDATE `user` SET 
    firstname_parent='".$update_firstname_parent."' WHERE email = '".$_SESSION['email']."'"); 

if (mysqli_affected_rows($connect) == 1) 
{ 
    die('Could not update data: ' . mysql_error()); 
} else { 
echo "Updated data successfully\n"; 
} 
mysql_close($connect); 

?> 


<?php 
session_start(); 

if(empty($_SESSION)) // if the session not yet started 
    session_start(); 

if(!isset($_SESSION['email'])) { //if not yet logged in 
    header("Location: login.php");// send to login page 
    exit; 
} 

include ('header.php'); 

$get = "SELECT * FROM user email WHERE email='".$_SESSION['email']."'"; 
$result_get = mysqli_query($connect, $get); 
$_SESSION['data'] = mysqli_fetch_assoc($result_get); 

?> 
    <form method="POST" action="update_profile.php" class="form-horizontal form-label-left"> 

    <div class="form-group"> 
    <label class="control-label col-md-3 col-sm-3 col-xs-12">Vorname:</label> 
    <div class="col-md-9 col-sm-9 col-xs-12"> 
    <input type="text" name="firstname_parent" class="form-control" value="<?php echo $_SESSION['data']['firstname_parent']; ?>"> 
    </div> 
    </div> 
    <button type="submit" name="update" value="update" class="btn btn-warning btn-lg btn-block">PROFIL VERVOLLSTÄNDIGEN</button> 
    </form> 
0

Первое, что нужно знать, если данные верны попытка повторить

echo($connect, "UPDATE `user` SET 
    firstname_parent='".$update_firstname_parent."' WHERE email = '".$_SESSION['email']."'"; 

если данные показывают, то ваш код правильно, но вот мое:

$sql = mysqli_query("UPDATE user SET firstname_parent='".$update_firstname_parent."' WHERE email = '".$_SESSION['email']."'");