2017-01-20 8 views
-1

私はSQL/PHP/HTMLを初めて使い、現時点ではuniで学習しています。
私たちは、私たちがデータベースを更新してデータベースに追加するためのフォームを含む、私たちの選択したウェブサイトを作成するよう求められました。
これまでに見たことのない最も基本的な漫画本ライブラリを作成しました。テーブルを更新しているPHPがデータベースに影響を与えていない

これまでのところ、関連するフィールドがたくさんあるデータベースに新しいコミックを追加できる作業フォームが1つあります。別のフォームを作成して、漫画にマークを付けることができます所有者はドロップダウンリストから選択して[送信]をクリックします。
これは、ブール値を0から1に変更します。この値は、漫画ページに表示され、オーナーとしてマークされます。
私はフォームを作成できましたが、すべてが機能しているようですが、送信ボタンをクリックしてもデータベースが実際には更新されていないことを確認するメッセージが表示されます。

以下は私のPHPコードです。私が更新しようとしているテーブルがComicと呼ばれ、特定の列が所有と呼ばれていることを知るのに役立つならば、所有されているすべてのブール値はデフォルトで0に設定され、このフォームは1に更新されます。 実際のデータベースは更新されています。何を掲載するID これだったときは、漫画の名前を使用することはできません

<?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

作品を願って いくつかのアポストロフィとドットが '$ strのm_own'ですINまたは整数? –

+0

なぜ ";"あなたのクエリ文字列の更新? –

+0

@UsmanRanaはあまり心配しません。 –

答えて

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

あなたの助けの人に感謝し、私もそれを見ている数人の友人との年齢のために、このを見つめてきたし、誰もが、私はあなたの答えにそれを変更した、ことを発見していなかったし、それが完璧に動作します:場合'$ sql888'はユーザーの入力に由来し、フィルタリングされません。あなたのソリューションにはSQLインジェクションの脆弱性が含まれます。 MySQLiはパラメータバインディングを提供しています。 – smartnet

+0

@smartnet歓迎されている – halfer

関連する問題