2013-11-27 67 views
0

我有插入的ID,名字和姓氏的PHP代码:PHP INSERT托管数据库

<?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')"); 
?> 

而且我有这样的HTML与AJAX:

<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是空白的。

有人可以告诉我错过了什么吗?任何帮助,将不胜感激。

+1

你可以纠正这个拼写$ fisrtname至$姓 – Satya

+1

旁注:你的PHP脚本对SQL注入攻击的公开邀请。 – SuperSaiyan

+1

也请尝试从mysql *扩展转移到PDO,因为mysql *扩展已正式弃用 – Satya

回答

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')"); 
?> 

而不是使用旧XMLHTTP它能够更好地使用jQuery.Ajax,而且MySQL的功能已被弃用使用PDO

您应该使用任何mysql转义函数来实现安全性。

希望它可以帮助..

+0

我试过这个,但名字和姓氏仍然是空白并且没有提示。 我不知道我是否像这样做了:'xmlhttp.open(“GET”,“http://url.com/dir/testing.php?”+ data,true);' 而这个这里: 'var data =“firstname =”+ fname +“&lastname =”+ lname;' 因为姓氏有'&'和名字没有。 –

+0

它的查询字符串参数然后整个url将像http://url.com/dir/testing.php?firstname=你的名字和姓氏=你的名字,第二个必需&检查我更新的代码你的名字在查询中有一个错字(spell问题)。 –

+0

准确地尝试我的代码。警报()没有任何数据bcoz你没有输出从该页面。 –

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) 
      { 

      } 
     } 
} 

+0

试过这一个,但仍然是空白。 –