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

时间:2014-04-14 13:19:48

标签: javascript php jquery mysql mysqli

我有一个网站,它基本上是一个音频播放器和屏幕上的集成歌词查看器,用户应该能够与他们听到的音乐同步。我只有一个问题,那就是;我怎么能从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);
?>

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

首先,当您将字符串指定为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注入攻击,您应该fix that