2016-02-22 2 views
0

Я работаю над своим назначением, и я не могу заставить свое обновление работать с моей базой данных. Вот моя форма, в которой хранятся данные.PHP-код не будет обновлять базу данных

<form name="edit" method="post" action="process/editRecord.php"> 

    <p class="indent"> 
     <label for="projectName">Edit Project Name</label> 
     <input type="text" name="projectName" id="projectName" value="<?php echo $projectName; ?>"> 
    </p> 

    <p class="indent"> 
     <label for="projectSoftware">Edit Project Software</label> 
     <input type="text" name="projectSoftware" id="projectSoftware" value="<?php echo $projectSoftware; ?>" > 
    </p> 


    <p class="indent"> 
     <label for="projectDescription">Edit Project Description</label> 
     <textarea name="projectDescription" id="projectDescription" cols="150" rows="10" ><?php echo $projectDescription; ?></textarea> 
    </p> 

    <p class="indent"> 
     <label for="projectImage">Edit Project Image</label> 
     <input type="text" name="projectImage" id="projectImage" value="<?php echo $projectImage; ?>" > 
    </p> 

    <p class="indent"> 
     <label for="projectInformation">Edit Project Information</label> 
     <textarea name="projectInformation" id="projectInformation" cols="400" rows="10" ><?php echo $projectInformation; ?></textarea> 
    </p> 

    <p> 
     <input type="submit" name="button" id="button" value="Update"> 
    </p> 

</form> 

И вот процесс.

<?php 
ini_set('display_errors', 1); 
require('../../includes/conn.inc.php'); 
require('../../includes/functions.inc.php'); 
// sanitize user variables 
$sprojectName = safeString($_POST['projectName']); 
$sprojectSoftware = safeString($_POST['projectSoftware']); 
$sprojectDescription = safeString($_POST['projectDescription']); 
$sprojectImage = safeString($_POST['projectImage']); 
$sprojectInformation = safeString($_POST['projectInformation']); 
$sprojectID = safeInt($_POST['projectID']); 
// prepare SQL 
$stmt = $mysqli->prepare("UPDATE projects SET projectName =?, projectSoftware =?, projectDescription=?, projectImage =?, projectInformation =? WHERE projectID = ?"); 
$stmt->bind_param('sssssi', $sprojectName, $sprojectSoftware, $sprojectDescription, $sprojectImage, $sprojectInformation, $sprojectID); 
$stmt->execute(); 
$stmt->close(); 

header("Location: ../../php/projects.php"); 
// redirect browser 
exit; // make sure no other code executed 
?> 

Я не получаю ошибки при использовании этого и не обновляет свою базу данных, но восходит к соответствующей странице проектов.

+2

что щеколда является то, что 'safeString)' функция (? просто используйте только подготовленные заявления. вы не можете увидеть сообщение об ошибке, потому что, скорее всего, вы не включили его с тем фактом, что вы не проверяете, действительно ли выполнялся оператор – Ghost

+0

. safeString сананизует его, поэтому вы не можете его внедрить и что готовили statemants –

+0

Этот подготовленный оператор: '$ mysqli-> prepare (...', см. [PHP: MySQLi> Краткое руководство пользователя> Подготовленные утверждения] (http://docs.php.net/manual/en/mysqli.quickstart. ready-statements.php) – VolkerK

ответ

0

Это решило проблему

$ _POST [ 'ProjectID'] его не в форме - Дагон

+1

В этом случае вы, вероятно, должны не только установить display_error = On, но и поднять [error_reporting] (http://docs.php.net/manual/de/errorfunc.configuration.php#ini.error-reporting) (оба они предпочтительно не входят в сценарий, но, например, в php.ini, поскольку в производственной среде отправка полного сообщения об ошибке клиенту [следует избегать] (https://www.owasp.org/index.php/Information_Leakage)); 'safeInt ($ _ POST ['projectID'])' должен был привести к сообщению «неопределенного индекса». – VolkerK

Смежные вопросы