簡體   English   中英

嘗試使用javascript / PHP更新數據庫不起作用

[英]Trying to update a database with javascript/PHP doesn't work

我正在嘗試使用javascript和PHP更新數據庫,這是我的index.html代碼:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
</head>
<body>
    <input type="text" id="descriptioninput">
    <input type="number" id="budgetin">
    <input type="number" id="budgetout">
    <button type="button" onclick="addToDB()">Add to database</button>

    <script>
        function addToDB()
        {
            var descriptioninput = document.getElementById('descriptioninput').value;
            var budgetin = document.getElementById('budgetin').value;
            var budgetout = document.getElementById('budgetout').value;

            $.ajax ( {
                type: 'POST',
                url: 'addtodb.php',
                data:{descriptioninput:descriptioninput, budgetin:budgetin, budgetout:budgetout},
                success:function (data) {
                    // Completed successfully
                    alert('success!');
                }
            });
    </script>
</body>
</html>

這是我的addtodb.php代碼:

<?php

$host = "localhost";
$username = "root";
$password = "";
$dbname = "budgetdb";

$conn = new mysqli($host, $username, $password, $dbname);
if ($conn === TRUE)
{
$descriptioninput = $_GET['descriptioninput'];
$budgetin = $_GET['budgetin'];
$budgetout = $_GET['budgetout'];

$query = "INSERT INTO budget (description, budgetin, budgetout) VALUES ('$descriptioninput', '$budgetin', '$budgetout')";

$conn->query($query);

$conn->close();
}

?>

但似乎我的PHP腳本未運行。 我的數據庫中沒有任何更改。 我試圖在PHP文件中執行warning()並使用.done(function(text))對其發出警報,但未顯示任何內容。

發生這種情況的原因是,您正在使用js中的POST方法執行ajax請求,但是您嘗試使用PHP中的GET方法來獲取變量。 將其切換為GET使用。

注意SQL注入 您可以通過使用准備好的語句或將字符串轉義為:

$descriptioninput = $conn->real_escape_string($_GET['descriptioninput']);

同樣,第一個if條件無效。 您只需要像if ($conn)代替if ($conn === TRUE)

將ajax類型更改為GET

$.ajax ( {
type: 'GET',
url: 'addtodb.php',
data:{descriptioninput:descriptioninput, budgetin:budgetin, budgetout:budgetout},
success:function (data) {
// Completed successfully
alert('success!');
}
});

我可能是錯的,但我相信描述可能是mySQL中的保留關鍵字。 嘗試將其封裝

INSERT INTO budget (`description`, `budgetin`, `budgetout`) VALUES ('$descriptioninput', '$budgetin', '$budgetout')

它對ajax和JS之間的混合有點混亂。 嘗試將此getHTTP函數用於常規JS。

 function httpGet(theUrl){ //FETCH Data From Server xmlhttp=new XMLHttpRequest(); xmlhttp.open("GET", theUrl , false ); xmlhttp.send(); return xmlhttp.responseText; } 

然后只需將您的網址構建為+ addtodb.php?param1 =“ + param1value +”&param2 =“ + param2value

暫無
暫無

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

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