2015-11-25 2 views
0

это мой первый пост!как отредактировать запись из базы данных MySQL

Во-первых, у меня есть код, который выводит таблицу на index.php. В конце у меня есть ссылка редактирования, который принимает меня к странице edit.php:

if ($result->num_rows > 0) { 
    echo "<p><table><tr><th>ID</th><th>Film Name</th><th>Producer</th><th>Year Published</th><th>Stock</th><th>Price</th><th>Function</th></tr>"; 
    while($row = $result->fetch_assoc()) { 
     echo "<tr><td>".$row["ID"]."</td><td>".$row["FilmName"]."</td><td>".$row["Producer"]."</td><td>".$row['YearPublished']."</td><td>".$row['Stock']."</td><td>".$row['Price']."</td><td>"."<a href=\"edit.php\">Edit</a>/Delete"."</td></tr></p>"; 
    } 
    echo "</table>"; 

edit.php (первый есть форма):

$query = "SELECT * FROM ProductManagement WHERE ID=" . $_GET["ID"] . ";"; // Place required query in a variable 
       $result = mysqli_query($connection, $query); // Execute query 

       if ($result == false) { // If query failed 
        echo "<p>Getting product details failed.</p>"; 
       } else { // Query was successful 
        $productDetails = mysqli_fetch_array($result, MYSQLI_ASSOC); // Get results (only 1 row 
        // is required, and only 1 is returned due to using a primary key (id in this case) to 
        // get the results) 

        if (empty($productDetails)) { // If getting product details failed 
         echo "<p>No product details found.</p>"; // Display error message 
        } 
       } 
       ?> 
<form id="updateForm" name="updateForm" action="<?php echo "?mode=update&ID=" . $productDetails["ID"]; ?>" method="post">         
        <div> 
         <label for="updateFormProductCostPrice">ID</label> 
         <input id="updateFormProductCostPrice" name="ID" type="text" readonly 
           value="<?php echo $productDetails["ID"]; ?>"> 
        </div> 
        <div> 
         <label for="updateFormProductName">Film Name</label> 
         <input id="updateFormProductName" name="FilmName" type="text" value="<?php echo $productDetails["FilmName"]; ?>"> 
        </div> 
        <div> 
         <label for="updateFormProductDescription">Producer</label> 
         <textarea rows="4" cols="50" id="Producer" 
            name="productDescription"><?php echo $productDetails["Producer"]; ?></textarea>     
        </div> 
        <div> 
         <label for="updateFormProductPrice">Year Produced</label> 
         <input id="updateFormProductPrice" name="YearProduced" type="text" 
           value="<?php echo $productDetails["YearProduced"]; ?>"> 
        </div> 
        <div> 
         <label for="updateFormProductStock">Stock:</label> 
         <input id="updateFormProductStock" name="Stock" type="text" 
           value="<?php echo $productDetails["Stock"]; ?>"> 
        </div> 
        <div> 
         <label for="updateFormProductEan">Price:(&#163)</label> 
         <input id="updateFormProductEan" name="Price" type="text" 
           value="<?php echo $productDetails["Price"]; ?>"> 
        </div> 
        <div> 
         <input id="updateSubmit" name="updateSubmit" value="Update product" type="submit"> 
        </div> 
       </form> 
</body> 

Тогда есть код РНР обновить запись (edit.php продолжение):

if (((!empty($_GET["mode"])) && (!empty($_GET["id"]))) && ($_GET["mode"] == "update")) { // If update 
     echo "<h1>Update product</h1>"; 
     if (isset($_POST["updateSubmit"])) { // If update form submitted 
      // Check all parts of the form have a value 
      if ((!empty($_POST["ID"])) && (!empty($_POST["FilmName"])) 
        && (!empty($_POST["Producer"])) && (!empty($_POST["YearProduced"])) 
        && (!empty($_POST["Stock"])) && (!empty($_POST["Price"]))) { 
       // Create and run update query to update product details 
       $query = "UPDATE products " 
         . "SET FilmName = '" . $_POST["FilmName"] . "', " 
         . "Producer = '" . $_POST["Producer"] . "', " 
         . "YearProduced = '" . $_POST["YearProduced"] . "', " 
         . "Stock = " . $_POST["Stock"] . ", " 
         . "Price = '" . $_POST["Price"] . "' " 
         . "WHERE id=" . $_GET['ID'] . ";"; 
       $result = mysqli_query($connection, $query); 

       if ($result == false) { // If query failed - Updating product details failed (the update statement failed) 
        // Show error message 
        echo "<p>Updating failed.</p>"; 
       } else{ // Updating product details was sucessful (the update statement worked) 
        // Show success message 
        echo "<p>Updated</p>"; 
         } 
                       } 
              } 
} 

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

В настоящее время, когда я нажимаю ссылку «Изменить», она загружает страницу редактирования и имеет пустые поля и говорит «Не удалось получить детали продукта». Было бы здорово, если бы он мог получить данные для выбранной строки. Может кто-нибудь помочь, пожалуйста? Благодаря!

+0

'ID'! =' Id' - поэтому проверьте наличие ошибок как на стороне PHP, так и на SQL. Ты этого не делаешь. –

+1

Проконсультируйтесь по следующим ссылкам http://php.net/manual/en/mysqli.error.php и http://php.net/manual/en/function.error-reporting.php и примените это к своему коду. –

+1

Также используйте инструкции подготовки, чтобы избежать SQL-инъекций. –

ответ

1

В edit.php файл $_GET["ID"] пуст, потому что в вашей ссылке нет значения ID, поэтому запрос не возвращает результатов. Также в вашем последнем файле у вас есть $_GET["id"], который отличается от используемого вами значения ($_GET["ID"]).

Попробуйте это:

echo " 
    <tr> 
     <td>".$row["ID"]."</td> 
     <td>".$row["FilmName"]."</td> 
     <td>".$row["Producer"]."</td> 
     <td>".$row['YearPublished']."</td> 
     <td>".$row['Stock']."</td> 
     <td>".$row['Price']."</td> 
     <td><a href=\"edit.php?ID=".$row["ID"]."\">Edit</a> 
     <td><a href=\"delete.php?ID=".$row["ID"]."\">Delete</a> 
    </tr>"; 

Также вы SQL Injection уязвимы. Вы можете комбинировать mysqli с подготовленными инструкциями, чтобы избежать этого.

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