我仍在使用电影数据库的网站上工作。我有的问题是,我的SQL语句从数据库中删除电影没有执行。我有两页,一页是用户可以看到电影的页面,另一页是点击删除按钮时执行的代码。PHP/SQL语句输出错误
以下是从概述电影之一的信息的代码,因为对于其他电影的代码都差不多:
<div><tr><td><div style="width: 200px; height:296px; margin-top: 50px">
<div class="image-hover">
<img src="img/deadpool.jpg" width="200px" height="296px"/>
<span class="desc"><div class="filmtitle"><?php
$sql1a = "SELECT title FROM films WHERE film_id = '1'";
$result = $mysqli->query($sql1a);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo $row["title"] ;}}?></div>
<div style="font-size:8px; text-transform:uppercase; color:#000;">
<div class="black"><div class="filmdiscription"><b>Samenvatting: </b> <?
php
$sql1b = "SELECT description FROM films WHERE film_id = '1'";
$result = $mysqli->query($sql1b);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo $row["description"];}
}
?>
<div style="font-size:8px; text-transform:uppercase; color:#000;">
<div class="black2"><div class="yearrating"><b>Jaar: </b> <?php
$sql1c = "SELECT release_year FROM films WHERE film_id = '1'";
$result = $mysqli->query($sql1c);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo $row["release_year"];}
}?>
<div style="font-size:8px; text-transform:uppercase; color:#000;">
<div class="black2"><div class="yearrating" ><b>Rating (0-5): </b> <?php
$sql1d = "SELECT rating FROM films WHERE film_id = '1'";
$result = $mysqli->query($sql1d);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo $row["rating"];}
}?>
</div>
<div class="black2"><div class="yearrating">
<a class="alert" href="deletemovie.php?id='.$row['film_id'].'" ></i>
Delete <?php '</a>'?> <center>
</span>
</div></div>
</div></div>
为“deletemovie.php”代码:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css"/>
</head>
<?php
session_start(); //De sessie wordt gestart.
function is_logged() {
if (isset($_SESSION['username'])) return true;
return false; //Er wordt gekeken of de gebruikersnaam correct is.
}
if(!is_logged()){
header("Location: sign-in.php"); //Als de gebruiker naar overzichtlogin.php
gaat, zonder dat hij of zij is ingelogd, worden ze doorgestuurd naar de
login pagina.
}
require_once('db_const.php'); //De gegevens voor de database verbinding
worden in 1 centraal bestand opgehaald.
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if (!$mysqli){
die("Connection failed: ".mysqli_connect_error()); //Als de verbinding niet
lukt zal deze niet werken.
}
?>
<?php $current = 'delete'; ?> <!-- Om aan te geven dat men zich op de
beveiligde overzichtspagina bevindt, wordt gebruik gemaakt van deze
variabele. Current krijgt nu de waarde 'secured', waardoor de button waar
'secured' staat een kleur krijgt. -->
<body>
<div class="header">
<?php
if(isset($_SESSION['username'])){
require_once("headersecured.php"); //Indien de gebruiker ingelogd is, wordt
'headersecured.php' gebruikt als header.
}else{
require_once("header.php"); //Indien de gebruiker niet is ingelogd, wordt
header.php gebruikt als header.
}
?>
</div>
<?php
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$id = $_GET["id"]; //Het ID van de film wordt opgehaald.
$sql = "DELETE FROM films WHERE film_id = $id"; //De film waarbij het ID
hoort wordt verwijderd uit de database.
?>
<?php
if (mysqli_query($mysqli, $sql)) { //Zorgt ervoor dat de film wordt
verwijderd.
echo "Succesvol verwijderd!"; //Laat zien dat de film verwijderd is uit de
database.
echo "<br>"; // Witruimte
echo "<a href='overzichtlogin.php'>Terug naar de vorige pagina.</a>";
//Door op deze link te klikken gaat de gebruiker terug naar de
overzichtspagina.
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($mysqli); //Indien het
verwijderen niet goed is gegaan, wordt er een foutmelding getoond.
}
?>
<div class="footer">
<?php include 'footer.php';?> <!-- de footer wordt opgehaald -->
</div>
</body>
</html>
当某人在概览中单击“删除”时,应该从数据库中删除该电影。点击时出现错误:
Error: DELETE FROM films WHERE film_id = '.$row['film_id'].' You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'film_id'].'' at line 1"
我应该在我的代码中更改哪些内容?
所有参数多态查询的第一个,也可能是SQL注入现在。 –
'WHERE film_id = $ id'在你的代码中。你在哪里得到错误信息中的WHERE film_id ='。$ row ['film_id']。''?或者你没有显示真实的代码? – Mihai
@Mihai它是我正在使用的代码的一部分。 –