나는 이것에 대해 잠시 혼란스러워했지만 거의 다 왔어. 이 벽을 지나쳐 가야 겠어.이 SQL 쿼리에 대한 PHP 코드를 어떻게 수정할 수 있습니까?
tracks (trackid, tracktitle, albumid, composerid)
albums (albumid, albumname)
composers (composerid, composername)
나는
INSERT INTO tracks (tracktitle, albumid, composerid) VALUES ('New Song', 1, 1);
와 phpMyAdmin을 SQL 탭을 통해 새로운 레코드를 삽입 할 수 있고 그것을 잘 작동합니다 :
나는 다음과 같은 테이블이있다.
내 PHP 양식은 똑같은 일을하지는 않지만 뭔가를 간과해야합니다. 누군가 내 addtrack 페이지의 코드를 확인하고 무엇이 잘못되었는지 말해 줄 수 있습니까?
if (isset($_POST['tracktitle'])):
// A new track has been entered
// using the form.
$cid= $_POST['cid'];
$tracktitle = $_POST['tracktitle'];
$albs = $_POST['albs'];
if ($cid == '') {
exit('<p>You must choose an composer for this track.
Click "Back" and try again.</p>');
}
$sql = "INSERT INTO tracks SET
tracks.tracktitle='$tracktitle'" ;
if (@mysql_query($sql)) {
echo '<p>New track added</p>';
} else {
exit('<p>Error adding new track' . mysql_error() . '</p>');
}
$trackid = mysql_insert_id();
if (isset($_POST['albs'])) {
$albs = $_POST['albs'];
} else {
$albs = array();
}
$numAlbs = 0;
foreach ($albs as $albID) {
$sql = "INSERT IGNORE INTO tracks (trackid, albumid,
composerid) VALUES " .
"($trackid, $albs, $cid)";
if ($ok) {
$numAlbs = $numAlbs + 1;
} else {
echo "<p>Error inserting track into album $albID: " .
mysql_error() . '</p>';
}
}
?>
<p>Track was added to <?php echo $numAlbs; ?> albums.</p>
<p><a href="<?php echo $_SERVER['PHP_SELF']; ?>">Add another
track</a></p>
<p><a href="tracks.php">Return to track search</a></p>
<?php
else: // Allow the user to enter a new track
$composers = @mysql_query('SELECT composerid, composername
FROM composers');
if (!$composers) {
exit('<p>Unable to obtain composer list from the
database.</p>');
}
$albs = @mysql_query('SELECT albumid, albumname FROM albums');
if (!$albs) {
exit('<p>Unable to obtain album list from the
database.</p>');
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="post">
<p>Enter the new track:<br />
<textarea name="tracktitle" rows="1" cols="20">
</textarea></p>
<p>Composer:
<select name="cid" size="1">
<option selected value="">Select One</option>
<option value="">---------</option>
<?php
while ($composer= mysql_fetch_array($composers)) {
$cid = $composer['composerid'];
$cname = htmlspecialchars($composer['composername']);
echo "<option value='$cid'>$cname</option>\n";
}
?>
</select></p>
<p>Place in albums:<br />
<?php
while ($alb = mysql_fetch_array($albs)) {
$aid = $alb['albumid'];
$aname = htmlspecialchars($alb['albumname']);
echo "<label><input type='checkbox' name='albs[]'
value='$aid' />$aname</label><br />\n";
}
?>
이렇게 정렬하면 확장하고 보안 문제를 분류 할 수 있습니다. 여기에있는 누군가는 나에게 새로운 것이있는 PDO를 들여다 보았습니다. 그러나 한 번에 하나 개의 장애물 ....
감사
오류 메시지가 표시됩니까? 그렇다면 무엇이 표시됩니까? - 편집 : 사실, 지금 문제가 나타납니다. – Teekin
맨 마지막에'endif;'가 빠져 있습니다 ('':''는 결코 닫히지 않습니다). – Yahel
어떤 DBMS를 사용하고 있습니까? 호기심이 있습니까? – Teekin