PHP INSERT托管数据库

时间:2013-11-27 05:29:05

标签: php mysql ajax

我有这个插入id,firstname和lastname的PHP代码:

<?php
header('Access-Control-Allow-Origin: *');

$conn = mysql_connect('localhost', 'happy', '***');
$db   = mysql_select_db('dbtest');


$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];

mysql_query("INSERT INTO tbltry (firstname, lastname) VALUES('$firstname', '$lastname')");
?>

我有这个带有AJAX的HTML:

<script>
function save(){
var xmlhttp;

         if (window.XMLHttpRequest)
         {
            xmlhttp=new XMLHttpRequest();
         }
         else
         {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
         }


        xmlhttp.open("POST", " **url** ", true);
        console.log("added");
        xmlhttp.send();

        xmlhttp.onreadystatechange=function()
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200)
             {

             }
         }
}
</script>
</head>
<body>

Firstname: <input type="text" name="firstname" id="firstname">
Lastname: <input type="text" name="lastname" id="lastname">
<button onclick="save()">Save</button>
</body>

这两个工作正常,它在数据库中插入一个新行,但插入的唯一数据是id列上的id,列firstname和lastname为空。

有人能说出我错过了什么吗?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

尝试这样的事情,

function save(){
 var fname = document.getElementById("firstname").value;
 var lname = document.getElementById("lastname").value;
 var data = "firstname="+fname+"&lastname="+lname;  
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {

            alert(xmlhttp.responseText);

        }
      }

    xmlhttp.open("POST","url?"+data,true);
    xmlhttp.send();

}

您的测试文件应该像

<?php

$conn = mysql_connect('localhost', 'happy', '***');
$db   = mysql_select_db('dbtest');


$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];

mysql_query("INSERT INTO tbltry (firstname, lastname) VALUES('$firstname', '$lastname')");
?>

使用jQuery.Ajax而不是使用旧的xmlhttp更好,而且使用PDO也不推荐使用mysql函数。

您应该使用任何mysql转义函数来保证安全。

希望有所帮助......

答案 1 :(得分:0)

试试这个

<script>
function save(){
var xmlhttp;

var fname = document.getElementById("firstname").value;
 var lname = document.getElementById("lastname").value;

var data = {firstname:fname,lastname:lname};
         if (window.XMLHttpRequest)
         {
            xmlhttp=new XMLHttpRequest();
         }
         else
         {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
         }


        xmlhttp.open("POST", " **url** ", true);
        console.log("added");
        xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        xmlhttp.send(data);

        xmlhttp.onreadystatechange=function()
         {
         if (xmlhttp.readyState==4 && xmlhttp.status==200)
             {

             }
         }
}