嘿我当前尝试创建一个页面,我可以在我的SQL数据库中插入一些信息,这是php
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "film";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$filmtitle = $_POST['filmtitle'];
$filmyear = $_POST['filmyear'];
$filmduration = $_POST['filmduration'];
$filmrating = $_POST['filmrating'];
$sql="INSERT INTO film (Title, FilmYear, Duration, FilmRating) VALUES
('$filmtitle', `$filmyear`, '$filmduration', '$filmrating',)";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else
{
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
当我点击提交按钮时,我收到以下错误, 找不到对象!
在此服务器上找不到请求的URL。引用页面上的链接似乎是错误的或过时的。请告知该页面的作者有关错误的信息。
如果您认为这是服务器错误,请与网站管理员联系。
以下是HTML
<html>
<body>
<h1> Insert a new film!</h1>
<form action ="insert-film.php method="post">
Film Title: <input type="text" name="filmtitle">
Year: <input type="text" name="filmyear">
Duration: <input type="text" name="filmduration">
Certificate: <input type="text" name="filmcertificate">
<input type="submit">
</form>
</body>
</html>
答案 0 :(得分:2)
这里有一些问题。
第一
<form action ="insert-film.php method="post">
^ right there.
缺少报价。
<form action ="insert-film.php" method="post">
然后:您使用了刻度而不是$filmyear
的引号和尾随的逗号
('$filmtitle', `$filmyear`, '$filmduration', '$filmrating',)";
^ right there.
应该读作
('$filmtitle', '$filmyear', '$filmduration', '$filmrating')";
您似乎也使用了filmcertificate
的错误数组,该数组应为filmrating
。
证书:<input type="text" name="filmcertificate">
没有POST数组。
$filmtitle = $_POST['filmtitle'];
$filmyear = $_POST['filmyear'];
$filmduration = $_POST['filmduration'];
$filmrating = $_POST['filmrating'];
和
Film Title: <input type="text" name="filmtitle">
Year: <input type="text" name="filmyear">
Duration: <input type="text" name="filmduration">
Certificate: <input type="text" name="filmcertificate">
最后一个与$_POST['filmrating']
数组不匹配。
你可能打算这样做:
Film Title: <input type="text" name="filmtitle">
Year: <input type="text" name="filmyear">
Duration: <input type="text" name="filmduration">
Film rating: <input type="text" name="filmrating">
只有你知道应该是什么。相应的Ajust。
一旦您的PHP在操作中修复引用后启动,您就会被抛出undefined index filmrating in line...
通知。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Then the rest of your code
旁注:只应在暂存时进行显示错误,而不是生产。
您目前的代码向SQL injection开放。使用prepared statements或PDO与prepared statements。
答案 1 :(得分:0)
你的SQL末尾有一个额外的逗号:
$sql="INSERT INTO film (Title, FilmYear, Duration, FilmRating) VALUES
('$filmtitle', `$filmyear`, '$filmduration', '$filmrating',)";
应该是:
$sql="INSERT INTO film (Title, FilmYear, Duration, FilmRating) VALUES
($filmtitle', '$filmyear', '$filmduration', '$filmrating')";
另外,请确保您的反对与单引号保持一致。
最后,您接触到SQL injection attack。