2017-01-20 4 views
-1

Я очень новичок в SQL/PHP/HTML и изучаю их в uni на данный момент.
Нам было предложено создать веб-сайт по нашему выбору с функциональностью, включая формы, которые позволят нам обновлять и добавлять в базу данных.
Я создал самую основную библиотеку комиксов, которую вы когда-либо видели.PHP обновление таблицы не влияет на базу данных

До сих пор у меня есть одна рабочая форма, которая позволяет пользователю добавлять новый комикс в базу данных с кучей соответствующих полей, я пытаюсь создать другую форму на другой странице, которая позволяет пользователю отмечать комикс как , выбрав его в раскрывающемся списке и нажав кнопку «Отправить».
Это изменит логическое значение от 0 до 1, которое будет отображаться на странице комикса, обозначающей его как принадлежащее.
Мне удалось создать форму, и все, кажется, работает, сообщение подтверждения отображается при нажатии кнопки отправки, но тогда база данных фактически не обновляется.

Ниже приведен код PHP. Если это помогает узнать таблицу, которую я пытаюсь обновить, называется Comic, а конкретный столбец называется собственностью, все принадлежащие логическим значениям устанавливаются как 0, эта форма должна обновлять его до 1. Все работает, кроме обновляется актуальная база данных.

<?php 
    ini_set('display_errors', 1); 
    ini_set('display_startup_errors', 1); 
    error_reporting(E_ALL); 

    $content = "<h1>Mark a comic as owned</h1>"; 
    $action = $_SERVER["PHP_SELF"]."?page=owned"; 
    $sql0 = "SELECT Comic.name, Comic.id, Comic.owned 
      FROM Comic"; 

    $result0 = mysqli_query($link, $sql0); 
    if($result0 === false){ 
      echo mysqli_error($link); 
    } else { 
      $options0 = ""; 
      while($row = mysqli_fetch_assoc($result0)){ 

        $options0 .= "<option value='".$row['id']."'>"; 
        $options0 .= $row['name']; 
        $options0 .= "</option>"; 
      } 
    } 

    $form_html = "<form action'".$action."' method='POST'> 
        <fieldset> 
          <label for='m_own'>Comic:</label> 
          <select name='m_own' required> 
            <option value='' disabled selected>Select owned comic</option> 
            ".$options0." 
          </select> 
        </fieldset> 
        <button type='submit'>Submit</button> 
        </form>"; 
    $content .= $form_html; 

    if($_SERVER["REQUEST_METHOD"] == "POST"){ 

      $m_own = $_POST["m_own"]; 

      $sql888 = "UPDATE Comic 
         SET owned = 1 
         WHERE name ='.$m_own.';"; 

      $result888 = mysqli_query($link, $sql888); 
      if($result888 === false){ 
        echo mysqli_errno($link); 
      } else { 
        $content .= "Marked"; 
      } 
    } 
?> 
+0

is '$ m_own' a str или целое число? –

+0

Почему существует «;» в строке запроса для обновления? –

+0

@ Усман Рана не слишком беспокоился об этом. –

ответ

1

Вы не можете использовать комическое имя, когда то, что вы Размещенный идентификатор Это то, что у вас есть

$sql888 = "UPDATE Comic SET owned = 1 WHERE name ='.$m_own.';"; 
$result888 = mysqli_query($link, $sql888); 

Это должно быть

$sql888 = "UPDATE Comic SET owned = 1 WHERE id ='$m_own';"; 
$result888 = mysqli_query($link, $sql888); 

Примечания я изменил название куда где id и некоторые апострофы и точки Надеюсь, что сейчас это работает

+0

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

+0

Добро пожаловать – smartnet

+0

@smartnet: if '$ sql888' поступает из пользовательского ввода и не фильтруется, ваше решение будет содержать уязвимость SQL-инъекции. MySQLi предлагает привязку параметров, которую вы должны использовать всегда, если нет альтернативы. – halfer

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

  • Нет связанных вопросов^_^