0

私は、人々が(YouTubeから)音楽を検索し、同じWebサイトでそれを見ることができるWebサイトを作成しています。(YouTubeに行く必要はありません。)私のデータベースには、プレイリスト用のテーブルがあります。テーブルには4つの値があります。ID、userID、アーティスト、曲。

idは一意のIDです-これにはYouTubeIDを使用しています-。userIDはユーザーのIDです。彼らがログインしている場合、彼らはプレイリスト機能を使用できません。私はすでにそのためのデータベースを持っています。

次のPHPコードがあり、この情報をデータベースに保存する必要がありますが、機能していません。

if (isset($_SESSION['username'])){

                        echo '<button type="add to playlist" action="post">ADD</button>';


                        include 'playlistdb.php';
                        $sql = "insert into playlist (i,d,a,t) values ('$_POST[ID]','$_POST[userID]','$_POST[artist]','$_POST[title]')";
                        $result = mysql_query($sql,$conn) or die(mysql_error());
                    }
                    else{
                        echo "You are not logged in, you can use the playlist.";
                    }

しかし、これは機能しません。次のエラーが発生します。

注意:未定義のインデックス:112行目のC:\ wamp \ www \ IKEPROJECT GROUP 9\video.phpのID

userID、アーティスト、タイトルについても同じです。

ここで何が問題になっているのかわかりません。

エラーは次の行から発生します。

$sql = "insert into playlist (i,d,a,t) values ('$_POST[ID]','$_POST[userID]','$_POST[artist]','$_POST[title]')";
4

3 に答える 3

1

ボタンのエンティティが間違っていると思います。次のような形式を使用してください <button type="submit" formmethod="post" formaction="submit.php">ADD</button>

于 2012-12-16T20:32:00.177 に答える
1

PDOとフォーマットコードを読みやすい方法で使用することを検討してください。

$sth = $dbh->prepare("insert into playlist (i,d,a,t) values (?, ?, ?, ?)");
$sth->execute(array($_POST['ID'], $_POST['userID'], $_POST['artist'], $_POST['title']));

それでもエラーが発生する場合は、「ID」という名前の有効な入力フィールドがあることを確認してください。

于 2012-12-16T20:34:01.663 に答える
0

引用符が必要です。$_POST [ID]ではなく、$ _POST['ID']です。プロパティPHPのフォーマットについては、SaeedNajafiのコメントを参照してください。

さらに、コードに深刻なSQLインジェクションの脆弱性があります...それを修正することは非常に重要です。そうしないと、誰かがサイトをハッキングしたり、データベースを消去したりする可能性があります。

于 2012-12-16T20:38:25.757 に答える