繁体   English   中英

如何使用 mysqli 和 javascript 更新我的数据库

[英]How do I update my database with mysqli and javascript

我有一个网站,它基本上是一个音频播放器和一个屏幕上的集成歌词查看器,用户应该能够与他们听到的音乐同步。 我只有一个问题,那就是; 我到底如何从 javascript 函数调用 mysqli 更新语句? 当用户单击保存按钮时,内容被扔到一个 div 中,我希望在运行 JavaScript 后 PHP 获取该内容并将其放入数据库中。

最好的方法是什么?

为什么这不起作用?

        function saveinPHP() {
        //alert("Came here");
        //var superstr = $( "#savelyric" ).text();
        var superstr = 'lol';
        $.ajax({
        type: "POST",
        url: "includes/sendlyrics.php",
        data: superstr,
        cache: false,
        contentType: false,
        processData: false,
        success:  function(data){
            alert("---"+data);
            alert("Settings has been updated successfully." + data + "~~~" + superstr);
            //window.location.reload(true);
        }
    });
    }

然后是PHP:

    <?php 
include ('db_connect.php');

$data = $_POST['data'];

    $query = "UPDATE song SET time=". $data ." WHERE id='1'";
    mysqli_query($query);
?>

将 PHP 编写在一个完全独立的专用文件中,该文件采用 POST 变量、构造 SQL 查询并将它们插入到数据库中。 然后让您的 JavaScript 函数使用 POST 请求将数据发送到此 PHP 文件。

浏览器中的 JavaScript 无法与数据库交互。 它只能向可以捕获这些请求并将附加数据放入数据库的服务器发送 GET/POST 请求。

首先,当您指定一个字符串作为data ,jQuery 将按原样发送它。

您使用的字符串"lol"没有以 PHP 能够理解的 POST 数据的任何一种标准格式进行格式化。

因此, $_POST中没有数据。

改为向 jQuery 传递一个对象:

data: { data: superstr }

其次false不是上述任何一种标准格式的内容类型。 默认情况下,jQuery 将使用适当的内容类型。 删除此覆盖:

contentType: false,

第三processData: false,将对象转换为表单编码数据。 去掉它。

第四,SQL 中的字符串必须被引用。 你没有引用data

 $query = "UPDATE song SET time='$data' WHERE id='1'";

请注意,这仍然容易受到 SQL 注入的影响,您应该修复它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM