我有一个使用HTML / PHP制作的表单,我希望它提交到数据库;我有一个电影网站,我目前正在处理管理面板,我希望它有一个表单,可以在网站上添加新电影,我试用了我的表单,但没有任何内容进入数据库。与数据库的连接很好,查询对我来说很好,老实说,我不知道问题是什么。
P.S。我用阿拉伯语制作,阿拉伯语写作没有任何意义..
PHP / HTML代码:
<?php
session_start();
include('php/config.php');
if($_SESSION['username'] != true){
header('Location: http://www.domain.com/');
}
//this form allows to choose what to do (e.g. add new movie)...
else{
echo'
<head>
<link rel="stylesheet" href="css/main.css" />
<link rel="stylesheet" href="css/admin.css" />
<meta charset="utf-8"/>
<title>Admin Panel v1.0</title>
</head>
<ul class="management-b">
<li><a href="#">إضافة فيلم جديد</a></li>
<li><a href="#">إضافة مسلسل جديد</a></li>
<li><a href="#">مسح فيلم/مسلسل</a></li>
</ul>
';
}
//this form adds new movies...
connectDB();
$genreQuery = mysql_query("SELECT genre FROM Genres");
echo'
<head>
<link rel="stylesheet" href="css/main.css"/>
<link rel="stylesheet" href="css/admin.css"/>
<meta charset="utf-8" />
</head>
<form method="post" id="new-movie">
عنوان الفيلم:<input type="text" class="new-movie-title" name="new-movie-title" /><br/><br/>
وصف الفيلم:<textarea class="new-movie-desc" name="new-movie-desc" cols="50" rows="7"></textarea><br/><br/>
نوع الفيلم:<select class="new-movie-genre" name="new-movie-genre">';
while($options = mysql_fetch_array($genreQuery, MYSQL_ASSOC)){
echo '<option>'.$options["genre"].'</option>';
}
echo'</select><br/><br/>
تاريخ الفيلم:<select class="new-movie-year" name="new-movie-year">';
for($years = 1995; $years<2017; $years++){
echo '<option>'.$years.'</option>';
}
echo'
</select><br/><br/>
رابط الفيلم:<input type="text" name="new-movie-link" class="new-movie-link"/><br/><br/>
صورة الفيلم:<input type="text" name="new-movie-img" class="new-movie-img" /><br/><br/>
تقييم imDB:<input type="text" name="new-movie-imdb" class="new-movie-imdb"/><br/><br/>
<input type="submit" name="new-movie-submit" class="new-movie-submit" value="إضافة الفيلم" />
</form>
';
if(isset($_POST['new-movie-submit'])){
connectDB();
$mNewTitle= $_POST['new-movie-title'];
$mNewDesc= $_POST['new-movie-desc'];
$mNewGenre= $_POST['new-movie-genre'];
$mNewYear= $_POST['new-movie-year'];
$mNewURL= $_POST['new-movie-link'];
$mNewIMG= $_POST['new-movie-img'];
$mNewIMDB= $_POST['new-movie-imdb'];
mysql_query("INSERT INTO Movies(title, description, genre, url, image, imdb, release-year) VALUES('$mNewTitle', '$mNewDesc', '$mNewGenre', '$mNewURL', '$mNewIMG', '$mNewIMDB', '$mNewYear'");
closeDB();
}
?>
答案 0 :(得分:1)
如果您检查错误,MySQL会告诉您,您没有名为year
的列标识符,因为release-year
中包含一个短划线,这使得MySQL认为您正在减去列标识符{{ 1}}来自year
。用刻度线包裹该列名称以解决此问题。
release
正如评论中所提到的,您使用的是过时的API,因为{7}中的mysql_query("INSERT INTO Movies(title, description, genre, url, image, imdb, `release-year`) VALUES('$mNewTitle', '$mNewDesc', '$mNewGenre', '$mNewURL', '$mNewIMG', '$mNewIMDB', '$mNewYear'");
函数已全部从PHP中删除,并且您对SQL注入持开放态度,这是最常见的基于Web的攻击形式。< / p>
正如我之前提到的,你不会检查或处理错误。您可以通过基本错误检查快速捕获此错误。您还需要为发生错误做好准备,否则您的用户在发生错误时会有糟糕的体验。