簡體   English   中英

嘗試使用PHP / Mysqli將數據插入數據庫

[英]Trying to insert data into a database using PHP / Mysqli

我正在嘗試執行插入查詢以將數據寫入數據庫。 我正在使用Mysqli和PHP。 該代碼對我來說還可以。 但是,每次我訪問該網頁檢查表單是否有效時,都會執行查詢,並在數據庫中創建一個新行(空)。

我很確定最后一個if語句出了點問題。 你能建議嗎?

順便說一句,該代碼段僅適用於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();

您正在混合過程式和面向對象的SQL交互。

這是程序上的:

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

這是面向對象的:

$conn->query($sql) 

您不能在相同的連接詳細信息中使用這兩者,您應該在整個代碼中使用一個或另一個。 最好使用的是面向對象的方法,因此將過程代碼重做為:

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

因此,實際上您可以簡單地刪除以$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注入,如果有人發布的數據也恰好是MySQL命令(例如DROP ,則SQL注入會破壞數據庫。

注釋代碼:

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. if(isset($_POST['Submit'])){//your code here }   

2. if($result){...

如果您使用程序方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM