尝试使用PHP / Mysqli将数据插入数据库

时间:2016-07-11 16:00:24

标签: php

我正在尝试执行Insert查询以将数据写入数据库。我正在使用Mysqli和PHP。 代码对我来说很合适。但是,每次我访问网页检查表单是否有效时,查询都会执行,在DB中创建一个新行(空)。

我很确定最后一句if语句有问题。你能告诉我吗?

BTW,该片段仅供PHP执行sql查询,因为表单工作正常。

谢谢!

$servername = "localhost";
$username = "root";
$password = "mysqlpassword";
$dbname = "bowieDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$album = $_POST['album'];
$relyear = $_POST['relyear'];
$label = $_POST['label'];
$chart = $_POST['chart']; 
$track1 = $_POST['track1'];
$track2 = $_POST['track2'];
$track3 = $_POST['track3'];
$track4 = $_POST['track4'];
$track5 = $_POST['track5'];

$sql = "INSERT INTO Albums (album, relyear, label, chart, track1, track2,     track3, track4, track5)
VALUES ('$album', '$relyear', '$label', '$chart', '$track1', '$track2',     '$track3', '$track4', '$track5')";

$result = mysqli_query($conn, $sql);
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

2 个答案:

答案 0 :(得分:1)

您正在混合过程和面向对象的SQL交互。

这是程序性的:

$result = mysqli_query($conn, $sql);

这是面向对象的:

$conn->query($sql) 

您不能同时使用相同的连接细节,您应该在整个代码中执行其中一个。最好使用的是面向对象的方法,因此将过程代码重新编写为:

$result = $conn->query($sql);
if ($result) {
...

所以实际上你可以简单地删除从$result = ...开始的行并让IF语句查询你已经自己处理了。

其他说明:

  • 使用MySQL错误反馈,例如在SQL语句后检查if(!empty($conn->error)){print $conn->error;}。请参阅下面的示例代码...

  • 使用以下PHP错误反馈,设置在PHP页面的最顶层:

...

  error_reporting(E_ALL);
  ini_set('display_errors',0);
  ini_set('log_errors',1);
  • 你需要阅读并注意可能会破坏你的数据库的SQL注入,如果有人POST数据也恰好是DROP之类的MySQL命令。

评论代码:

if ($_SERVER['REQUEST_METHOD'] == "POST") {
     //run SQL query you already have coded and assume
     // that the form has been filled in. 
    $result = $conn->query($sql);
    if ($result) { 
        //all ok
     }
     if(!empty($conn->error)) {
        print "SQL Error: ".$conn->error;
     } 
}

答案 1 :(得分:0)

使用

1. if(isset($_POST['Submit'])){//your code here }   

2. if($result){...

如果您使用的是程序方法