无法插入sql数据库

时间:2016-02-04 15:37:31

标签: php mysql

嘿我当前尝试创建一个页面,我可以在我的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>

2 个答案:

答案 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 statementsPDOprepared 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