1

このコードの問題は何ですか、私はデータベースにいくつかの値を挿入するためにフォームを使用しています、私はそのようなコントローラーのセットアップを持っています。フォームを送信すると、値はデータベースに投稿されませんでしたが、他のすべてのフィールドを削除し、フォームに2つのフィールドだけを残して投稿すると、機能するので、何かを見逃してしまいます。 6時間。助けてください:

//database insertion

 if (isset($_POST['VideoTITLE']))
 if (isset($_POST['ByArtist']))
 if (isset($_POST['GroupName']))
 if (isset($_POST['URL'])) 
 if (isset($_POST['VideoDate']))
 {

  try
 {
 $sql = 'INSERT INTO videoclip SET
        VideoTITLE = :VideoTITLE,
        ByArtist   = :ByArtist,
        GroupName  = :GroupName,
        URL        = :URL,
        VideoDate  = CURDATE()
        ';

    $s = $pdo -> prepare($sql);
    $s -> bindValue(':VideoTITLE',$_POST['VideoTITLE']);
    $s -> bindValue(':ByArtist',$_POST['ByArtist']);
    $s -> bindValue(':GroupName',$_POST['GroupName']);
    $s -> bindValue(':URL',$_POST['URL']);
    $s -> execute();
}
  catch(PDOException $e)
  {
    $error = 'error adding submitted data' . $e-> getMessage();
    include 'error.html.php';
    exit();
  }
    header('Location:.');
    exit();
}

これが私のhtmlフォームの設定です:

<form action="?" method="post" class="form-horizontal">
   <legend>Song Info</legend>


<fieldset>
<label>Song Title </label>
<input type="text" id="VideoTITLE" name="VideoTITLE" placeholder="song name…">

<label>Artist </label>
<input type="text" id="ByArtist" name="ByArtist" placeholder="artist name…">

<label>Musical Group</label>
<input type="text" id="GroupName" name="GroupName" placeholder="Type something…">

<label>Poster link</label>
<input type="text" id="URL" name="URL" placeholder="Type something…">

</fieldset><br>
<input  type="submit" class="btn  btn-success" value="Post video">

</form>
4

3 に答える 3

1

そのいくつかの問題、多分もっと:

  1. isset($_POST['VideoDate'])はフォームにないため、常にfalseになるif条件がありますVideoDateCURDATE()挿入スクリプトで使用して設定したいようですので、これを削除する必要があります。
  2. 挿入ステートメントが正しくありません。mysqlの挿入は通常、次のようにINSERT INTO TABLE_NAME (COL1, COL2) values('VALUE1', 'VALUE2');なります。したがって、挿入コードを次のように変更する必要があります。

    $sql = 'INSERT INTO videoclip (VideoTITLE, ByArtist, GroupName, URL, VideoDate) values (:VideoTITLE, :ByArtist, :GroupName, :URL, CURDATE())';

于 2012-12-20T20:02:22.590 に答える
0

あなたはifステートメントを間違ってやっています。

if (isset($_POST['VideoTITLE']) && isset($_POST['ByArtist']) && isset($_POST['GroupName'])
    && isset($_POST['URL']) && isset($_POST['VideoDate'])) {
....
}

これは基本的なプログラミング関連のものなので、プログラミングまたはPHPの優れた入門書を入手することをお勧めします。

于 2012-12-20T20:46:22.850 に答える
0

の構文が正しくありませんINSERT。次のようになります。

$sql = 'INSERT INTO videoclip (VideoTITLE, ByArtist, GroupName, URL, VideoDate) 
    VALUES (:VideoTITLE, :ByArtist, :GroupName, :URL, CURDATE())';

また、$_POST['VideoDate']フォームにないため無効です。

于 2012-12-20T20:03:19.607 に答える